C++程序基礎知識(基本句子結構,I/O,函數,類與對象,數據共享與保護,數組與指針,繼承,多態,異常處理).
C++支持面向過程與面向對象兩種編程模式,本教材在結構安排上,注重這兩種模式的過渡,結合到面向對象的專題論述,讓學生從傳統過程C模式程序設計真正進入面向對象C++模式的程序設計知識海洋中。
教材重點特出,內容詳略得當,敘述清楚,深入淺出,通過教學,能讓學生以點帶面,通過教學內容的學習,步入C++知識的殿堂,為鑄就今后的扎實的編程能力打下良好的基礎,提升專業素養。
本書作者已經出版了數部教材,其中《數據結構》(C語言版)教材兩部(清華大學出版社),人民郵電出版社的《數據結構》(C++版)一部,具有豐富教材編寫經驗。
目前國內C++程序設計的教材影響力*大的兩部是清華大學的鄭莉的《C++語言程序設計》和清華大學譚浩強的《C++面向對象程序設計》,這兩部教材都很經典,但各有優缺點,鄭的教材深入,詳細,篇章結構合理,但內容過多,繁雜,不適合一般工科院校的常規教學,同時學生自學難度大,譚的教材知識點清晰,文字描述簡潔,但存在篇章組織不盡合理,部分知識點展開不夠,更適合作為一本參考教材。因此,針對當前一般工科院校學習C++的實際需要,著手經典具有相當難度的面向對象編程語言C++的教學實際,我們提出秉承“學習任何復雜的事物都要從*簡單的方面著手”的理念,力圖編寫一本入門容易,章節布局合理,內容循序漸進,有基礎有拔高的教材,以便更好的適應當前和將來C++教學需求。
從當前市場需求來看,一本教材不可能適應所有學校、所有層次、不同專業的教學需求,從當前高校整體分布來看,一般層次的本科院校占了市場的相當大的比例,我們的編寫教材的立足點就是從一般本科院校的教學實際需要出發,從自身教學經驗出發(我們所處的也是一般本科院校層次),力圖編寫一本內容適用、全面,結構合理,敘述簡潔,配套資源充足的本科教材,讓其適應大多數一般本科院校教與學的實際需要。
第1章 緒論 1
1.1 C++簡介 1
1.2 面向對象與面向過程 1
1.3 C++對面向對象的支持 2
1.4 C++的新特性 3
1.5 小結 5
習題一 6
第2章 C++程序設計基礎 7
2.1 認識C++程序 7
2.1.1 C++程序實例 7
2.1.2 字符集 8
2.1.3 詞法記號 8
2.1.4 VC6.0開發環境簡介 9
2.2 基本數據類型和表達式 12
2.2.1 基本數據類型 12
2.2.2 常量 13
2.2.3 變量 14
2.2.4 運算符與表達式 15
2.2.5 語句 18
2.3 數據的輸入與輸出 19
2.3.1 基本概念 19
2.3.2 C++輸入輸出示例 20
2.4 基本控制結構 24
2.4.1 用if語句實現選擇結構 24
2.4.2 多重選擇結構 25
2.4.3 循環結構 28
2.4.4 break和continue語句 31
2.4.5 程序舉例 32
2.5 自定義數據類型 33
2.5.1 typedef聲明 33
2.5.2 枚舉類型enum 33
2.5.3 結構體類型struct 34
2.5.4 聯合體類型union 36
2.6 小結 37
習題二 37
第3章 函數 41
3.1 函數的定義與使用 41
3.1.1 函數的定義 41
3.1.2 函數的參數傳遞 42
3.1.3 引用參數 43
3.1.4 函數的返回值 44
3.1.5 函數調用形式 44
3.2 內聯函數 47
3.3 帶默認形參值的函數 48
3.4 重載函數 49
3.5 C++系統函數 51
3.6 知識擴展 53
3.6.1 遞歸函數執行過程 53
3.6.2 C/C++存儲分配 55
3.7 小結 55
習題三 56
第4章 類與對象 57
4.1 面向對象的基本概念 57
4.1.1 抽象 57
4.1.2 封裝 58
4.1.3 繼承 58
4.1.4 多態 59
4.2 類和對象的定義 59
4.2.1 類的定義 59
4.2.2 對象的定義 61
4.3 構造函數和析構函數 61
4.3.1 構造函數 62
4.3.2 析構函數 63
4.3.3 拷貝構造函數 65
4.4 類的組合 67
4.4.1 組合 67
4.4.2 前向引用聲明 69
4.5 知識擴展 70
4.5.1 class與struct 70
4.5.2 非public構造函數 72
4.6 小結 74
習題四 75
第5章 數據的共享與保護 76
5.1 標識符的作用域與可見性 76
5.1.1 作用域 76
5.1.2 可見性 78
5.2 對象的存儲類型與生存期 79
5.3 類的靜態成員 81
5.3.1 靜態數據成員 82
5.3.2 靜態函數成員 83
5.4 類的友元 85
5.4.1 友元函數 86
5.4.2 友元類 86
5.5 共享數據的保護 87
5.5.1 常對象 87
5.5.2 用const修飾的類成員 88
5.5.3 常引用 93
5.6 多文件結構和編譯預處理命令 95
5.6.1 C++程序的一般組織結構 95
5.6.2 外部變量與外部函數 98
5.6.3 編譯預處理 100
5.7 小結 104
習題五 104
第6章 數組、指針與字符串 106
6.1 數組 106
6.1.1 數組的聲明與使用 106
6.1.2 數組的存儲與初始化 108
6.1.3 數組作為函數的參數 109
6.1.4 對象數組 112
6.1.5 程序實例 113
6.2 指針 114
6.2.1 內存空間的訪問方式 115
6.2.2 指針變量的聲明 115
6.2.3 指針的賦值 116
6.2.4 指針運算 117
6.2.5 用指針處理數組元素 119
6.2.6 指針數組 123
6.2.7 用指針作為函數的參數 124
6.2.8 指針型函數 126
6.2.9 指向函數的指針 126
6.2.10 對象指針 128
6.3 動態內存分配 130
6.4 深復制與淺復制 131
6.5 字符串 133
6.5.1 用字符數組存儲和處理字符串 134
6.5.2 string類 135
6.6 綜合實例 137
6.7 知識擴展 138
6.7.1 指向指針的指針 138
6.7.2 指針與const限定符 139
6.8 小結 141
習題六 141
第7章 繼承與派生 142
7.1 繼承與派生的基本概念 142
7.2 單一繼承 145
7.3 類的保護成員 148
7.4 訪問權限和類型兼容規則 150
7.4.1 公有派生和類型兼容規則 152
7.4.2 保護派生 154
7.4.3 私有派生 156
7.5 多繼承 156
7.6 構造函數和析構函數 157
7.7 多繼承中的二義性問題 162
7.7.1 作用域分辨操作符與支配規則 163
7.7.2 虛繼承與虛基類 163
7.7.3 虛基類成員的構造和析構 166
7.8 知識擴展 172
7.9 小結 173
習題七 174
第8章 多態性 176
8.1 多態性概述 176
8.2 運算符重載 176
8.2.1 運算符重載的機制 177
8.2.2 運算符重載的規則 177
8.2.3 重載為類的非成員函數(通常是友元函數) 177
8.2.4 重載為類的成員函數 180
8.2.5 其他運算符重載示例 182
8.3 虛函數 185
8.3.1 靜態聯編與動態聯編 185
8.3.2 一般虛函數成員 187
8.3.3 虛析構函數 188
8.4 純虛函數和抽象類 189
8.4.1 純虛函數 189
8.4.2 抽象類 190
8.4.3 抽象類的意義 192
8.5 知識擴展 193
8.5.1 dynamic_cast安全向下轉型 194
8.5.2 用typeid獲取運行時類型信息 196
8.6 小結 198
習題八 198
第9章 流類庫與輸入/輸出 200
9.1 I/O流的概念及流類庫結構 200
9.1.1 I/O流的概念 200
9.1.2 流類庫結構 201
9.2 輸出流 202
9.2.1 插入運算符和操縱符 202
9.2.2 文件輸出流 206
9.2.3 二進制輸出文件 209
9.2.4 字符串輸出流 210
9.3 輸入流 211
9.3.1 使用提取運算符 211
9.3.2 文件輸入流 211
9.3.3 輸入流相關函數 211
9.3.4 字符串輸入流 213
9.4 輸入輸出流 214
9.5 綜合實例 214
9.6 知識擴展 219
9.6.1 重載輸出運算符 219
9.6.2 重載輸入運算符 220
9.7 小結 221
習題九 221
第10章 異常處理 223
10.1 異常處理的一個簡單程序 223
10.2 異常處理機制 224
10.2.1 異常 224
10.2.2 異常處理的任務 225
10.2.3 異常處理的機制 225
10.2.4 多個catch結構 227
10.3 自定義異常類 229
10.4 C++標準異常類 230
10.5 綜合實例 231
10.6 知識擴展 232
10.6.1 異常處理中的對象的構造
和析構 232
10.6.2 重拋異常 233
10.7 小結 234
習題十 234
第11章 MFC簡介 236
11.1 MFC的主要特征 236
11.1.1 封裝 236
11.1.2 繼承 237
11.1.3 虛擬函數和動態約束 237
11.1.4 MFC的宏觀框架體系 237
11.2 MFC和Win32 238
11.3 Cobject類 239
11.3.1 Cobject 類的定義 239
11.3.2 CObject類的特性 240
11.4 MFC中的消息映射 242
11.4.1 消息的分類 242
11.4.2 消息結構和消息處理 243
11.4.3 消息映射的定義 244
11.4.4 MFC消息映射的實現方法 245
11.4.5 消息映射的相關宏 245
11.4.6 消息映射聲明 246
11.4.7 消息映射實現 248
11.4.8 消息映射宏 248
11.5 MFC窗口過程 250
11.5.1 MFC窗口過程的指定 250
11.5.2 對Windows消息的接收
和處理 251
11.5.3 對命令消息的接收和處理 251
11.5.4 對控制通知消息的接收
和處理 251
11.6 對象創建 251
11.6.1 對象創建與相互關系 251
11.6.2 MFC提供的接口 252
11.7 小結 253
習題十一 253
第12章 課程設計 254
12.1 C++設計模式 254
12.1.1 課程設計的目的和意義 254
12.1.2 課程設計的基本要求 254
12.1.3 課程設計的技術要點 255
12.1.4 課程設計報告的基本格式 255
12.1.5 Factory模式簡介 255
12.1.6 Singleton模式 259
12.2 人事管理系統 260
12.2.1 人事管理系統設計的目的
和意義 260
12.2.2 人事管理系統設計的基本
要求 260
12.2.3 人事管理系統設計試驗報告
的基本格式 261
12.2.4 人事管理系統設計技術要點 261
12.2.5 人事管理系統開發步驟簡介 261
12.3 坦克大戰游戲 272
12.3.1 坦克大戰游戲設計的目的
和意義 272
12.3.2 坦克大戰游戲設計的基本
要求 273
12.3.3 坦克大戰游戲設計試驗報告
的基本格式 273
12.3.4 坦克大戰游戲設計的技術要點 273
參考文獻 296