原创 C++模板與泛型編程(41-49條款)

41:瞭解隱式接口和編譯器多態 1.面向對象編程世界裏總是以顯式接口(源碼中明確可見)和運行期多態解決問題;Templates及泛型編程的世界中,與面向對象有根本上不同,在此世界中,顯式接口和運行期多態仍然存在,但是重要性降低,反

原创 C++教程(最全)

1 C++簡介1.1 起源1.2 應用範圍1.3 C++和C2開發工具3 基本語法3.1 註釋3.2關鍵字3.3標識符4 數據類型4.1基本數據類型4.2 數據類型在不同系統中所佔空間大小4.3 typedef聲明4.4 枚舉類

原创 C++中字符串與數值轉換(超詳細)

文章目錄一、使用stringstream(簡單粗暴)1.stringstream2.istringstream和ostringstream二 使用函數1 字符串轉成數值3.char數組轉換成數值3.數值轉換爲字符串三 總結 下面會

原创 C++繼承與面向對象設計(32-40條款)

32:確定你的public繼承塑模出is-a關係 class Bird { public: virtual void fly();//鳥可以飛 ... }; class Penguin:public Bird//企鵝

原创 改善C++11和C++14使用的42種具體方法(簡版-上)

《Effective Modern C++》 1:理解template類型推導 在template類型推導中,作爲引用的參數被視爲非引用,即忽略它們的引用性。 當推導通用引用參數的類型時,左值參數得到特殊處理。 當推導值參數

原创 35個改善編程與設計的有效方法

01:指針與引用的區別 因爲引用肯定會指向一個對象,在 C++裏,引用應被初始化 指針與引用的另一個重要的不同是指針可以被重新賦值以指向另一個不同的對象。但是 引用則總是指向在初始化時被指定的對象,以後不能改變。 還有一種情況,

原创 C++構造/析構/賦值運算(05-12條款)

05 :瞭解C++默默編寫並調用哪些函數 編譯器可以暗自爲class創建默認構造函數、拷貝構造函數(初始化調用)、拷貝賦值操作符(賦值調用)、析構函數· 類名(){... 類名(const 類名& rhs){...} ~類名(){

原创 構建工具Gradle之多項目構建

項目模塊化     在企業項目中,包層次和類關係比較複雜,把代碼拆分成模塊通常是最佳實踐,這需要你清晰的劃分功能的邊界,比如把業務邏輯和數據持久化拆分開來。項目符合高內聚低耦合時,模塊化就變得很容易,這是一條非常好的軟件開發實踐。

原创 非遞歸方式實現二叉樹遍歷

先序遍歷 void BinaryTree::PreOrder(BinTreeNode *current = root) { stack<BinTreeNode*> s; while (current||!s.empty())

原创 55:讓自己熟悉Boost

Boost是一個C++開發者集結的社羣,也是一個可以自由下載的C++程序庫羣。它的網址是https://www.boost.org/ Boost的兩個原因使其他組織無法匹敵:     (1)它與C++標準委員會之間有着獨一無二的密

原创 C/C++可變參數函數

一、變長參數函數 頭文件:#include <stdarg.h> 函數聲明 int add(int count, ...); 函數定義 int add(int count, ...) { va_list va; va_sta

原创 C++設計與聲明(18-25條款)

18:讓接口容易被正確使用,不易被誤用 class Date { public: Date(int month,int day,int year) } 使用這個的類的人會翻下兩個錯誤:錯誤次序和無效的值 Date d(30

原创 C++將變量名轉換爲字符串

如何將變量名轉換爲字符串,這就用到了define中的特殊標識符 ##是簡單的連接符,#@用來給參數加單引號,#用來給參數加雙引號即轉成字符串。 #define Conn(x,y) x##y #define ToChar(x)