《C++高級進階教程》在假定讀者有一定的C++編程能力的基礎上,進一步加強了對一些基本概念(如文字常量與常變量、指針與引用、作用域與生命期、分離編譯模式、聲明與定義、靜態(tài)聯(lián)編與動態(tài)聯(lián)編等)的解釋,介紹了一些不太常用的關鍵字(如volatile、mumble、static cast、dynamic_cast、const_cast、reinterpret_cast等)的用法。同時,介紹了一些C++語言機制的底層實現(xiàn)方案,如引用是怎樣實現(xiàn)的、對象上的實例成員函數(shù)是怎樣被調(diào)用的、虛函數(shù)表是如何存儲以及如何被訪問的、new和delete的實現(xiàn)過程是怎樣的,等等。另外,還進一步加深了對一些常用的C++語言機制的講解,如sizeof的用法、typedef的用法、命名空間的定義和使用、多維數(shù)組與多重指針、各種操作符的重載等,同時也對一些高級話題,如怎樣調(diào)試程序、為什么需要設計模式、怎樣應對C++語言的復雜性等進行了探討。
希望通過對這些內(nèi)容的學習,使讀者能夠在微觀和宏觀兩個方面進一步拓展對C++語言的認識,從而能夠更好地利用它進行程序開發(fā)。
第1章 C++基礎知識
1.1 關于C++標準
1.2 文字常量和常變量
1.3 const的用法
1.4 const cast的用法
1.5 mutable的用法
1.6 求余運算符
1.7 sizeo]f的用法
1.8 引用與指針常量
1.9 左值的概念
1.10 關于goto語句
1.11 volatile的用法
1.12 typedef的用法
1.13 關于字符串
1.14 什么是鏈式操作
1.15 關于名字空間
1.16 怎樣定義復雜的宏(Macro)
1.17 explicit的用法
第2章 數(shù)據(jù)類型與程序結(jié)構
2.1 C++的數(shù)據(jù)類型
2.2 C++中的布爾類型
2.3 void的用法
2.4 枚舉類型的定義和使用
2.5 結(jié)構與聯(lián)合體
2.6 數(shù)據(jù)類型轉(zhuǎn)換
2.7 聲明與定義的區(qū)別
2.8 關于初始化
2.9 作用域和生命期
2.10 關于頭文件
2.11 什么是分離編譯模式
第3章 函數(shù)
3.1 關于main()函數(shù)
3.2 函數(shù)參數(shù)是如何傳遞的
3.3 實現(xiàn)函數(shù)調(diào)用時堆棧的變化情況
3.4 關于函數(shù)參數(shù)的默認值
3.5 如何禁止傳值調(diào)用
3.6 定義和使用可變參數(shù)函數(shù)
3.7 關于函數(shù)指針
3.8 關于函數(shù)重載
3.9 關于操作符重載
3.10 類的成員函數(shù)與外部函數(shù)(靜態(tài)函數(shù))的區(qū)別
3.11 關于內(nèi)聯(lián)函數(shù)
3.12 函數(shù)的返回值放在哪里
3.13 extem“C”的作用
第4章 類與對象
4.1 類與對象概述
4.2 類定義后面為什么一定要加分號
4.3 關于初始化列表
4.4 對象的生成方式
4.5 關于臨時對象
4.6 關于點操作符
4.7 嵌套類與局部類
4.8 對象之間的比較
4.9 類的靜態(tài)成員的定義和使用
4.10 類的設計與實現(xiàn)規(guī)范
4.11 抽象類與純虛函數(shù)
4.12 類對象的內(nèi)存布局
4.13 為什么說最好將基類的析構函數(shù)定義為虛函數(shù)
4.14 對象數(shù)據(jù)成員的初始值
4.15 對象產(chǎn)生和銷毀的順序
4.16 關于拷貝構造函數(shù)
第5章 數(shù)組與指針
5.1 數(shù)組名的意義
5.2 什么是指針
5.3 數(shù)組與指針的關系
5.4 數(shù)組的初始化
5.5 多維數(shù)組與多重指針
5.6 成員數(shù)據(jù)指針
5.7 關于this指針
5.8 什么是懸掛指針
5.9 什么是解引用
5.10 指針與句柄
第6章 模板與標準模板庫
6.1 關于模板參數(shù)
6.2 關于模板實例化
6.3 函數(shù)聲明對函數(shù)模板實例化的屏蔽
6.4 將模板聲明為友元
6.5 模板與分離編譯模式
6.6 關于模板特化
6.7 輸入,輸出迭代子的用法
6.8 bitset的簡單用法
6.9 typename的用法
6.10 什么是仿函數(shù)
6.11 什么是引用計數(shù)
6.12 什么是ADL
第7章 內(nèi)存管理
7.1 C++程序的內(nèi)存布局
7.2 理解new操作的實現(xiàn)過程
7.3 怎樣禁止在堆(或棧)上創(chuàng)建對象
7.4 neW和delece的使用規(guī)范
7.5 delete和delete[]的區(qū)別
7.6 什么是定位放置new
7.7 在函數(shù)中創(chuàng)建動態(tài)對象
7.8 什么是內(nèi)存池技術
第8章 繼承與多態(tài)
8.1 私有成員會被繼承嗎
8.2 怎樣理解構造函數(shù)不能被繼承
8.3 什么是虛擬繼承
8.4 怎樣編寫一個不能被繼承的類
8.5 關于隱藏
8.6 什么是RTTI
8.7 虛調(diào)用的幾種具體情形
8.8 不要在構造函數(shù)或析構函數(shù)中調(diào)用虛函數(shù)
8.9 虛函數(shù)可以是私有的嗎
8.10 動態(tài)聯(lián)編是怎樣實現(xiàn)的
8.11 操作符重載
8.12【】操作符重載
8.13 *操作符重載
8.14 賦值操作符重載
8.15 輸入、輸出操作符重載
第9章 流類庫與輸入/輸出
9.1 什么是IO流
9.2 IO流類庫的優(yōu)點
9.3 endl是什么
9.4 實現(xiàn)不帶緩沖的輸入
9.5 提高輸入輸出操作的穩(wěn)健性
9.6 為什么要設定locale
9.7 char*和wch_T*之間的轉(zhuǎn)換
9.8 獲取文件信息
9.9 管理文件和目錄的相關操作
9.10 二進制文件的IO操作
第10章 異常處理
10.1 C++為什么要引入異常處理機制
10.2 拋出異常和傳遞參數(shù)的不同
10.3 拋出和接收異常的順序
10.4 在構造函數(shù)中拋出異常
10.5 用傳引用的方式捕捉異常
10.6 在堆棧展開時如何防止內(nèi)存泄漏
第11章 程序開發(fā)環(huán)境與實踐
11.1 關于開發(fā)環(huán)境
11.2 在IDE中調(diào)試程序時查看輸出結(jié)果
11.3 使用匯編語言
11.4 怎樣調(diào)試C++程序
11.5 關于編碼規(guī)范
11.6 正確使用注釋
11.7 靜態(tài)庫與動態(tài)庫
第12章 編程思想與方法
12.1 C與C++最大的區(qū)別
12.2 一個代碼重構的例子
12.3 實現(xiàn)代碼重用需要考慮的問題
12.4 為什么需要設計模式
12.5 再論C++的復雜性
參考文獻