內容簡介
本書立足編程實踐,以Linux或者Windows為開發平台,從初學者的角度出發,以面向對象程式設計思想為主線,結合實際項目的開發需求,將隱藏在面向對象背後的關於C++抽象、封裝、繼承、多態等機制和知識娓娓道來,用通俗易懂的語言展開講解,不僅讓讀者知其然,更要讓讀者知其所以然,最終讓這些知識再反作用於編程實踐,幫助讀者寫出高質量的C++代碼。全書涉及面向對象的嵌入式軟體開發的方方面面,具體說來,主要討論包括面向對象語言的特點、MySQL資料庫的套用、QT基礎知識入門及項目開發過程等多個方面的話題。
作者簡介
南京優奈特信息科技有限公司,即蘇嵌教育,是江蘇唯一能開展嵌入式套用開發、系統開發、驅動開發、硬體開發,全系列嵌入式工程師職業訓練的 機構,獨特的嵌入式產品全真教育,全國僅有兩家能實施嵌入式系統真實產品真實項目教學指導,蘇嵌是其中之一 ,也是華東華南地區唯一一家!
圖書目錄
第1章 面向對象概述 (1)
1.1 C++概述 (1)
1.1.1 C++的發展 (1)
1.1.2 為什麼要學習C++ (2)
1.2 面向過程和面向對象 (2)
第2章 C到C++的擴展 (5)
2.1 命名空間 (5)
2.1.1 什麼是命名空間 (5)
2.1.2 命名空間的使用 (6)
2.1.3 命名空間完整示例代碼 (7)
2.2 小程式“Hello World” (10)
2.2.1 輸出“Hello World” (10)
2.2.2 C++的輸入和輸出(cin和cout) (10)
2.3 變數定義的位置 (11)
2.4 register關鍵字的變化 (12)
2.5 struct的加強 (13)
2.6 三目運算符的加強 (14)
2.6.1 C與C++中三目運算符的不同 (14)
2.6.2 如何在C語言中實現C++的特性 (14)
2.7 bool類型 (15)
2.8 C/C++中的const (16)
2.8.1 C中的const (16)
2.8.2 C++中的const (17)
2.8.3 const與define (18)
2.9 C++中的引用 (20)
2.9.1 引用的概念與基本使用 (20)
2.9.2 引用作為函式參數 (21)
2.9.3 引用作為函式返回值 (23)
2.9.4 指針引用 (24)
2.9.5 常引用 (26)
2.9.6 引用的本質 (27)
2.10 C++內聯函式 (28)
2.10.1 內聯函式的概念和使用 (28)
2.10.2 內聯函式的特點和使用限制 (29)
2.11 C++函式的默認參數 (29)
2.12 C++函式的占位參數 (30)
2.13 C++中的函式重載 (32)
2.13.1 函式重載的概念 (32)
2.13.2 C++函式重載與函式指針 (34)
2.13.3 函式重載的二義性 (35)
2.13.4 函式重載與const形參 (35)
2.14 C++的動態記憶體分配 (37)
2.14.1 new與delete的基本用法 (37)
2.14.2 拓展:多維數組的動態創建與釋放 (38)
第3章 類和對象 (40)
3.1 面向對象編程介紹 (40)
3.1.1 什麼是面向對象 (40)
3.1.2 面向對象的優點 (40)
3.1.3 面向對象的特點 (41)
3.1.4 總結 (42)
3.2 類和對象 (43)
3.2.1 類和對象的概念 (43)
3.2.2 類的訪問控制 (45)
3.2.3 類的使用案例 (48)
3.2.4 面向對象編程實例 (49)
3.3 對象的構造和析構 (52)
3.3.1 構造函式 (52)
3.3.2 構造函式的重載和調用 (53)
3.3.5 析構函式 (59)
3.3.6 構造函式的參數初始化列表 (60)
3.3.7 對象的動態創建和釋放 (63)
3.4 淺拷貝和深拷貝 (64)
3.4.1 淺拷貝問題分析 (64)
3.4.2 深拷貝 (66)
3.5.1 靜態成員變數 (67)
3.5.2 靜態成員函式 (70)
3.6 C++對象的記憶體模型 (72)
3.6.1 編譯器對屬性和方法的處理機制 (72)
3.6.2 this指針 (74)
3.6.3 const修飾成員函式 (75)
3.7 友元函式和友元類 (76)
3.7.1 友元函式 (77)
3.7.2 友元類 (80)
3.7.3 友元函式的幾點說明 (82)
4.1 概念 (83)
4.1.1 什麼是運算符重載 (83)
4.1.2 運算符重載的使用 (84)
4.2 運算符重載的規則 (89)
4.3 常用的運算符重載 (91)
4.3.1 前置++與後置++的重載 (91)
4.3.2 左移<>操作符的重載 (93)
4.3.3 成員函式與友元函式重載的選擇 (97)
4.4 賦值運算符=的重載 (97)
4.5 數組下標運算符[ ]的重載 (100)
4.6 函式調用運算符( )的重載 (103)
4.7 new和delete運算符的重載 (103)
第5章 繼承與派生 (107)
5.1 繼承的概念及語法 (107)
5.1.1 類之間的關係 (108)
5.1.2 繼承關係 (108)
5.1.3 繼承的使用 (108)
5.2 派生類的訪問控制 (110)
5.3 繼承中的對象記憶體模型 (114)
5.4 派生類的構造函式和析構函式 (115)
5.4.1 派生類的構造函式 (115)
5.4.2 派生類的析構函式 (117)
5.4.3 繼承與組合混搭情況下構造和析構調用原則 (119)
5.5 繼承時的名字遮蔽 (121)
5.6 繼承中的static關鍵字 (123)
5.7 繼承中的類型兼容性原則 (125)
5.8 多繼承 (128)
5.8.1 多繼承的概念 (128)
5.8.2 多繼承中的構造與析構 (129)
5.8.3 多繼承導致的二義性問題 (131)
5.8.4 多繼承時的對象記憶體模型 (132)
5.9 虛繼承 (135)
5.9.1 虛繼承與虛基類 (135)
5.9.2 虛繼承時的構造函式 (139)
5.9.3 虛繼承時的對象記憶體模型 (141)
第6章 多態 (143)
6.1 多態的概念與使用 (143)
6.2 虛函式詳解 (147)
6.4 多態的實現機制 (153)
6.4.1 多態原理 (153)
6.4.2 構造函式中調用虛函式能否實現多態 (155)
6.4.3 父類指針操作子類數組 (157)
6.5 多繼承下的多態 (159)
6.6 虛繼承下的多態 (161)
6.7 純虛函式和抽象類 (162)
6.8 typeid運算符 (165)
6.9 靜態綁定和動態綁定 (168)
第7章 模板 (171)
7.1 函式模板 (171)
7.1.1 函式模板語法 (171)
7.1.2 函式模板和函式重載 (176)
7.1.3 函式模板機制 (178)
7.2 類模板 (179)
7.2.1 單個類的類模板語法 (179)
7.2.2 繼承中的類模板語法 (182)
7.2.3 類模板的使用 (184)
7.3 類模板中的關鍵字static (191)
第8章 異常 (193)
8.1 什麼是異常 (193)
8.2 異常的語法 (194)
8.3 異常類型以及多級catch (195)
8.4 throw詳解 (197)
8.5 標準庫異常 (199)
第9章 輸入/輸出流 (201)
9.1 輸入/輸出流介紹 (201)
9.1.1 輸入/輸出流的理解 (201)
9.1.2 流的理解 (202)
9.1.3 為什麼要引用輸入/輸出流 (203)
9.1.4 流的緩衝區 (204)
9.2 標準輸入/輸出流 (205)
9.2.1 標準輸入/輸出流對象 (205)
9.2.2 輸出流的使用 (205)
9.2.3 輸入流的使用 (206)
9.2.4 輸入/輸出格式化 (211)
9.3 檔案輸入/輸出流 (215)
9.3.1 檔案的打開與關閉 (215)
9.3.2 檔案的讀寫 (217)
9.4 字元串流的讀寫 (219)
第10章 標準模板庫STL (222)
10.1 STL概述 (222)
10.1.1 STL基本概念 (222)
10.1.2 容器 (223)
10.1.3 算法 (224)
10.1.4 疊代器 (225)
10.2 常用容器 (225)
10.2.1 string (225)
10.2.2 vector容器 (232)
10.2.3 deque容器 (237)
10.2.4 list容器 (240)
10.2.5 map容器 (243)
10.3 常用算法 (247)
10.3.1 算法概述 (247)
10.3.2 算法分類 (247)
10.3.3 算法中函式對象和謂詞 (250)
10.3.4 預定義函式對象和謂詞 (255)
10.3.5 函式適配器 (256)
第11章 C++11/14新標準 (259)
11.1 概述 (259)
11.2 實用性加強 (260)
11.2.1 新類型 (260)
11.2.2 統一初始化 (260)
11.2.3 nullptr與constexpr (261)
11.2.4 類型推導 (264)
11.2.5 基於範圍的for循環 (266)
11.2.6 強類型枚舉 (266)
11.2.7 智慧型指針 (268)
11.2.8 右值引用:移動語義和完美轉發 (275)
11.3 類的加強 (277)
11.3.1 特殊成員函式 (277)
11.3.2 委託構造 (278)
11.3.3 繼承構造 (278)
11.3.4 虛方法管理:override和final (278)
11.3.5 顯示禁用默認函式 (279)
11.4 對模板的加強 (279)
11.4.1 外部模板 (279)
11.4.2 尖括弧> (280)
11.4.3 模板別名using= (280)
11.4.4 默認模板參數 (281)
11.5 lambda函式 (282)
11.6 對標準庫的加強 (283)
11.6.1 新增容器 (283)
11.6.2 包裝器 (284)
11.6.4 並發編程 (286)
第12章 常用設計模式 (289)
12.1 概述 (289)
12.2 設計模式的基本原則 (289)
12.3 常用設計模式 (290)
12.3.1 單例模式 (290)
12.3.2 簡單工廠模式 (298)
12.3.3 工廠方法模式 (300)
12.3.6 代理模式 (308)
12.3.7 裝飾模式 (310)
12.3.8 策略模式 (313)
第13章 資料庫基礎 (320)
13.1 資料庫簡介 (320)
13.1.1 MySQL簡介 (320)
13.2 MySQL安裝 (322)
13.2.1 MySQL安裝測試 (323)
13.2.2 MySQL服務開啟與使用 (324)
13.3 MySQL管理 (324)
13.3.1 MySQL用戶設定 (324)
13.3.2 管理MySQL的命令 (327)
13.4 MySQL數據類型 (327)
13.4.1 整型 (327)
13.4.2 浮點型 (328)
13.4.3 定點數 (329)
13.4.4 字元串 (329)
13.4.6 日期和時間類型 (330)
13.4.7 數據類型的屬性 (331)
13.5 MySQL使用 (332)
13.5.1 登錄MySQL (332)
13.5.2 建庫建表 (333)
13.5.3 數據增刪改查 (334)
13.5.4 刪除整個資料庫 (336)
13.6 MySQL接口使用 (336)
13.6.1 MySQL中文完全參考手冊 (336)
13.6.2 獲取錯誤信息 (337)
13.6.3 連線伺服器 (337)
13.6.4 數據查詢 (339)
13.6.5 MySQL的事務處理 (342)
13.6.6 索引 (343)
13.7 MySQL案例 (344)
第14章 Qt入門 (349)
14.1 Qt簡介 (349)
14.1.1 Qt Creator的下載與安裝 (349)
14.1.2 Qt Creator環境介紹 (350)
14.2 Hello World (352)
14.2.1 編寫Hello World程式 (352)
14.2.2 添加一個按鈕 (356)
14.2.3 Qt的信號和槽機制 (356)
14.2.4 程式的發布和運行 (357)
14.3 視窗部件 (358)
14.3.1 基礎視窗部件QWidget (359)
14.3.2 對話框Qdialog (360)
14.3.3 其他視窗部件 (363)
14.4 布局管理 (365)
14.4.1 布局管理系統 (365)
14.4.2 設定夥伴 (367)
14.4.3 設定Tab鍵順序 (367)
14.5 常用控制項介紹 (368)
14.5.1 常用控制項需要載入的頭檔案 (368)
14.5.2 控制項變數定義 (369)
14.5.3 控制項初始化 (369)
14.5.4 在垂直布局中載入控制項 (369)
14.5.5 常用控制項使用 (370)
14.6 檔案、目錄和輸入/輸出 (372)
14.6.1 檔案和目錄 (372)
14.6.2 文本流和數據流(QDataStream和QtextStream) (374)
14.7 Qt和資料庫 (375)
14.7.1 連線到資料庫 (375)
14.7.2 執行SQL語句 (376)
14.8 Qt網路編程 (376)
14.8.1 Qt和TCP (377)
14.8.2 Qt和UDP (378)
參考文獻 (380)