移植Java代碼到C++的心得

      在實際的開發過程中,我們的項目或產品通常都會用到一些第三方開源組件或商業組件,以協助開發人員實現一些特定的通用功能,如xml解析,Regex解析和資料壓縮等。一般而言,只有在這兩者均無法滿足現有需求的情況下,我們才會考慮自行研發。因為適當的應用第三方組件可以保證開發人員能夠將更多的精力投入到產品的核心演算法和核心商務邏輯上,從而確保產品的開發週期和產品品質均能達到客戶與公司滿意的程度。     

Step By Step(Lua-C API簡介)

    Lua是一種嵌入式指令碼語言,即Lua不是可以單獨啟動並執行程式,在實際應用中,主要存在兩種應用形式。第一種形式是,C/C++作為主程式,調用Lua代碼,此時可以將Lua看做“可擴充的語言”,我們將這種應用稱為“應用程式代碼”。第二種形式是Lua具有控制權,而C/C++代碼則作為Lua的“庫代碼”。在這兩種形式中,都是通過Lua提供的C API完成兩種語言之間的通訊的。    1. 基礎知識:    C

關於“#ifdef __cplusplus” 和 ” extern “C” “

http://hi.baidu.com/diablomt/blog/item/df45828ff343a419b31bbaed.htmlhttp://hujw0710.blog.163.com/blog/static/8797282200852841732308/ http://hi.baidu.com/guoangang123/blog/item/0e0b483ead07363370cf6c5e.htmlhttp://hi.baidu.com/17cpp/blog/item/a46bfd13a

Step By Step(Lua調用C函數)

    Lua可以調用C函數的能力將極大的提高Lua的可擴充性和可用性。對於有些和作業系統相關的功能,或者是對效率要求較高的模組,我們完全可以通過C函數來實現,之後再通過Lua調用指定的C函數。對於那些可被Lua調用的C函數而言,其介面必須遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State*

Step By Step(C++模板重載和特化)

一、模板函數重載:    函數重載是一個非常通用亦非常容易理解的編程基礎概念,既函數名相同而函數簽名不同的一組函數,在實際的調用中,編譯器會根據函數參數的不同自動選擇最為合適且最為特化的函數。在推演的過程中,如果出現多個函數均符合該調用規則,編譯器將根據其內建的特化規則,選擇最為特殊的函數作為候選函數。然而如果仍有多個候選函數的話,編譯器將報出二義性錯誤。和普通函數一樣,在C++中模板函數也同樣支援函數重載的功能,甚至可以將模板函數與普通函數混合在一起,以達到更為靈活的函數重載的效果。  

C++異常處理

引言異常,讓一個函數可以在發現自己無法處理的錯誤時拋出一個異常,希望它的調用者可以直接或者間接處理這個問題。而傳統錯誤處理技術,檢查到一個局部無法處理的問題時:1.終止程式(例如atol,atoi,輸入NULL,會產生段錯誤,導致程式異常退出,如果沒有core檔案,找問題的人一定會發瘋)2.返回一個表示錯誤的值(很多系統函數都是這樣,例如malloc,記憶體不足,分配失敗,返回NULL指標)3.返回一個合法值,讓程式處於某種非法的狀態(最坑爹的東西,有些第三方庫真會這樣)4.調用一個預先準備好在

C++ md5操作(含源碼下載)

雖然一些C++第三庫已經繼承了MD5操作,但是有時我們更需要一個輕量的md5庫函數,這裡提供了一個MD5類,可以傳入一個字串產生md5結果。md5庫下載下載解壓後,有md5.h md5.cpp main.cpp三個檔案,其中md5.h和md5.cpp是MD5類的標頭檔和實現檔案,main.cpp是測試檔案。編譯和運行g++ md5.cpp main.cpp -o main./main輸出結果:abc md5 is

C++類型轉換(翻譯自cplusplus)

前言  原文翻譯自http://www.cplusplus.com/doc/tutorial/typecasting/,覺得這篇文章講C++類型轉換簡單明了,所以特別翻譯了下。  在C++中,將一個已知的類型轉換為另一個類型,我們稱呼為類型轉換,本文會介紹C++的各種類型轉換。隱式轉換隱式轉換不需要任何操作符,它們會自動執行,當值被賦值到相容類型,就會執行,例如:short a=2000;int b;b=a;隱式轉換,也包括建構函式和運算子的轉換,例如:class A {};class B {

C++ TinyXml操作(含源碼下載)

前言TinyXML是一個開源的解析XML的解析庫,能夠用於C++,能夠在Windows或Linux中編譯,使用TinyXML進行C++ XML解析,使用簡單,容易上手。這個解析庫的模型通過解析XML檔案,然後在記憶體中產生DOM模型,從而讓我們很方便的遍曆這棵XML樹。 DOM模型即文件物件模型,是將整個文檔分成多個元素(如書、章、節、段等),並利用樹型結構表示這些元素之間的循序關聯性以及嵌套內含項目關聯性。TinyXML介紹在TinyXML中,根據XML的各種元素來定義了一些類:

C++虛函數

前言 虛函數是在類中被聲明為virtual的成員函數,當編譯器看到通過指標或引用調用此類函數時,對其執行晚綁定,即通過指標(或引用)指向的類的類型資訊來決定該函數是哪個類的。通常此類指標或引用都聲明為基類的,它可以指向基類或衍生類別的對象。通過類繼承和虛函數機制可以實現C++運行期的動態多態。 虛函數虛函數是動態多態性的基礎,其調用的方式是動態聯編(又稱晚期聯編,簡單解釋為只有在程式運行時才決定調用基類的還是子類的,系統會根據基類指標所指向的對象來決定要調用的函數)。非虛函數與其相反,是靜態聯編

C++ JsonCpp 使用(含源碼下載)

前言JSON是一個輕量級的資料定義格式,比起XML易學易用,而擴充功能不比XML差多少,用之進行資料交換是一個很好的選擇JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用於標記javascript對象的,詳情參考http://www.json.org/。本文選擇第三方庫JsonCpp來解析json,JsonCpp是比較出名的c++解析庫,在json官網也是首推的。JsonCpp簡介JsonCpp主要包含三種類型的class:Value Reader

C++繼承

簡單繼承繼承是C++的特性,它可以建立一個類,繼承一個已知的類,衍生類別自動擁有了基類的成員。繼承的形式如下:class derived_class_name: public base_class_name{ /*...*/ };其中public表示繼承方式,可以替代為protected和private,如果省略繼承方式,對'class'將採用私人繼承,對'struct'將採用公有繼承。範例程式碼如下:// derived classes#include

c/c++筆記本

C/C++  基礎    C/C++基礎資料型別 (Elementary Data Type)    C++選擇語句    C++迴圈語句    C++函數    C++指標詳解    C/C++ typedef用法    C++ struct,union和enum    C++類和對象    C++類複製建構函式    C++繼承    C++虛函數    C++運算子多載    C++ Template    C++類型轉換    C++異常處理    異常不可用於邏輯處理  標準庫    

C/C++ typedef用法

引言typedef 聲明,簡稱 typedef,為現有類型建立一個新的名字。比如人們常常使用 typedef 來編寫更美觀和可讀的代碼。所謂美觀,意指 typedef 能隱藏笨拙的文法構造以及平台相關的資料類型,從而增強可移植性和以及未來的可維護性。 在編程中使用typedef目的一般有兩個,一個是給變數一個易記且意義明確的新名字,另一個是簡化一些比較複雜的型別宣告。typedef的使用方法如下:typedef existing_type new_type_name ;注意:typedef

Google C++單元測試架構(Gtest)系列教程之三——測試韌體(Test fixture)

引言在《Google C++單元測試架構(Gtest)系列教程之二——斷言、函數測試》中,我們瞭解了Assert 陳述式,以及如何運用TEST()進行函數測試,在TEST()的使用中,我們接觸了一個測試案例包含多個測試執行個體的組織方式。多個測試執行個體可能需要進行相識的資料配置和初始化操作,為此,Gtest提供了測試韌體(Test fixture)協助我們進行資料管理。“落後”的方法在瞭解測試韌體之前,我們先來看以下測試例子:template <typename E> // E

Google C++單元測試架構(Gtest)系列教程之一——入門

引言本文將先介紹單元測試的相關概念,然後引入Google的開源C++單元測試架構Gtest,最後通過編譯、運行Gtest內建的一個測試範例,介紹如何在Unix/Linux下使用Gtest。單元測試說到單元測試,大家應該不會陌生。作為軟體開發過程中最低層級的測試環節,單元測試一般由編碼人員自己完成,它的目的是隔離程式組件,並證明這些單個組件滿足預期的功能。在靜態程式分析、代碼檢視之後進行單元測試,可以協助我們在開發過程的早期發現問題。好的測試具備以下特點:1.獨立。一個測試案例應該是獨立的,所謂“

Google C++單元測試架構(Gtest)系列教程之四——參數化

引言在上一篇文章中,我們學習了如何使用Gtest的測試韌體(Test fixture)完成測試代碼和測試資料的複用,這一節我們來學習如何使用Gtest值參數化的方法,簡化函數測試;使用型別參數化的方法,簡化對模板類的測試。值參數化假設我們要對以下函數進行測試:// 判斷n是否為質數bool IsPrime(int n) 假設我們要編寫判定結果為false的測試案例,根據之前學習的斷言和TEST()的使用方法,我們編寫測試代碼如下:// Tests negative

Google C++單元測試架構(Gtest)系列教程之五——再論測試韌體

引言在《Google C++單元測試架構(Gtest)系列教程之三——測試韌體(Test

Google C++單元測試架構(Gtest)系列教程之二——斷言、函數測試

引言在《Google C++單元測試架構(Gtest)系列教程之一——入門》中,介紹了如何編譯測試代碼、產生可執行檔,下面我們來看Gtest提供了哪些語句和架構來方便我們編寫單元測試代碼。斷言1.斷言類型斷言即判斷一個條件是否為真的語句,它是構成Gtest測試代碼最基本的單元。Gtest為我們提供了兩種類型的斷言:ASSERT_*系列,當檢查點失敗時,終止測試函數;EXPECT_*系列,當檢查點失敗時,不終止所在測試函數,繼續往下執行。我們使用Assert 陳述式的時候,一般選擇EXPECT_*

Google C++單元測試架構(Gtest)系列教程之六——FAQ節選

這一節,我們來看Gtest的FAQ(Frequently-Asked

總頁數: 4314 1 .... 930 931 932 933 934 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.