C++語(yǔ)言是一門(mén)優(yōu)秀的程序設(shè)計(jì)語(yǔ)言,它全面兼容C語(yǔ)言,不僅保留了C語(yǔ)言簡(jiǎn)潔、靈活、高效的特點(diǎn),并且增加了面向?qū)ο蟪绦蛟O(shè)計(jì)的支持,從誕生以來(lái)一直備受廣大編程人員的喜愛(ài)。
本書(shū)將C++語(yǔ)言作為大學(xué)生學(xué)習(xí)程序設(shè)計(jì)的入門(mén)語(yǔ)言,其中包含C語(yǔ)言的內(nèi)容。每章內(nèi)容由淺入深,循序漸進(jìn),分成三個(gè)難度等級(jí):“基本知識(shí)”部分講述C/C++語(yǔ)言及其使用方法;“編程技能”部分討論各種程序設(shè)計(jì)和編程方法,把編程的思想融入實(shí)例中,力求使讀者在掌握C++語(yǔ)言的同時(shí),能夠?qū)ΜF(xiàn)實(shí)世界中較簡(jiǎn)單的問(wèn)題及其解決方法用計(jì)算機(jī)語(yǔ)言進(jìn)行描述;“刨根問(wèn)底”部分講解程序的運(yùn)行機(jī)制、程序運(yùn)行時(shí)產(chǎn)生相關(guān)結(jié)果的原因,使讀者“知其所以然”。
本書(shū)主要有以下幾個(gè)方面的特點(diǎn)。
1.將C++語(yǔ)言作為學(xué)習(xí)程序設(shè)計(jì)的入門(mén)語(yǔ)言,不必有C語(yǔ)言的基礎(chǔ),可以在最短的時(shí)間內(nèi)掌握一門(mén)面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,即零基礎(chǔ)學(xué)習(xí)C++。
2.學(xué)習(xí)語(yǔ)言的最終目的是要編程,而編程的精髓是要體會(huì)計(jì)算機(jī)運(yùn)行順序的思想,所以書(shū)中的實(shí)例都以?xún)?nèi)存的變化為依據(jù),力求使讀者在掌握C++語(yǔ)言的同時(shí),能夠掌握編程的思路,并且理解程序背后的運(yùn)行機(jī)制,編寫(xiě)“好”程序。
3.書(shū)中對(duì)程序運(yùn)行時(shí)的內(nèi)存使用情況建立邏輯模型,比如,用“棧區(qū)”工作過(guò)程來(lái)描述函數(shù)調(diào)用機(jī)制、參數(shù)傳遞機(jī)制,用“堆區(qū)”講解指針的使用機(jī)制,用“棧區(qū)”和“堆區(qū)”的配合講述復(fù)制構(gòu)造函數(shù),等等,可以幫助初學(xué)者對(duì)這些較難的內(nèi)容逐步地深入理解。即使有經(jīng)驗(yàn)的編程人員,閱讀本書(shū)也會(huì)有很大收獲。
4.精心選擇內(nèi)容,科學(xué)組織內(nèi)容。附錄提供了C/C++常用的函數(shù)和類(lèi)庫(kù),內(nèi)容全面且精煉,重點(diǎn)、難點(diǎn)突出。
本書(shū)的內(nèi)容適合C/C++語(yǔ)言的分層次教學(xué)使用,請(qǐng)參考表一和表二選擇教學(xué)內(nèi)容。
表一 C語(yǔ)言教學(xué)內(nèi)容
基本知識(shí) 編程技能 刨根問(wèn)底
第1章 C語(yǔ)言(2學(xué)分) C語(yǔ)言(1學(xué)分)
第2章
第3章
第4章
第5章
第6章
第7章
第8章
第9章
第10章
第11章
表二 C++語(yǔ)言教學(xué)內(nèi)容
基本知識(shí) 編程技能 刨根問(wèn)底
第1章 C++語(yǔ)言(3學(xué)分)
第2章
第3章
第4章 C++語(yǔ)言(1學(xué)分)
第5章
第6章
第7章
第8章
第9章
第10章
第11章
本書(shū)有配套的輔導(dǎo)書(shū)《C++語(yǔ)言程序設(shè)計(jì)案例及實(shí)踐輔導(dǎo)》,其中第1章~第11章對(duì)應(yīng)本書(shū)的相關(guān)章節(jié),除了各章習(xí)題解答,每章還提供了豐富的程序案例,第12章講述窗口程序設(shè)計(jì),第13章介紹郵件發(fā)送程序設(shè)計(jì),采用的是Visual Studio 2015集成開(kāi)發(fā)環(huán)境,第14章由淺入深地講解文本分析程序設(shè)計(jì),采用的是QT5集成開(kāi)發(fā)環(huán)境,適合作為課程設(shè)計(jì)的參考內(nèi)容。本書(shū)有配套的電子資源和在線課程,可以從西安電子科技大學(xué)出版社網(wǎng)站獲得。
書(shū)中不足之處在所難免,歡迎廣大讀者批評(píng)指正。
第1章 C++語(yǔ)言概述 1
基本知識(shí) 1
1.1 程序設(shè)計(jì)語(yǔ)言 1
1.2 程序設(shè)計(jì) 3
編程技能 5
程序開(kāi)發(fā)過(guò)程 5
簡(jiǎn)單的C++程序 6
刨根問(wèn)底 9
內(nèi)存模型 9
本章小結(jié) 11
習(xí)題和思考題 11
第2章 基本數(shù)據(jù)類(lèi)型與表達(dá)式 13
基本知識(shí) 13
2.1 C++的詞法記號(hào)和標(biāo)識(shí)符 13
2.1.1 字符集 13
2.1.2 關(guān)鍵字 13
2.1.3 標(biāo)識(shí)符 14
2.1.4 分隔符 14
2.1.5 空白 14
2.2 基本數(shù)據(jù)類(lèi)型 14
2.3 變量和常量 16
2.3.1 變量 16
2.3.2 常量 19
2.4 運(yùn)算符和表達(dá)式 22
2.4.1 表達(dá)式 22
2.4.2 語(yǔ)句和塊 23
2.4.3 運(yùn)算符 23
2.5 C語(yǔ)言的輸入/輸出 31
2.5.1 基本輸出 32
2.5.2 基本輸入 33
2.6 C++的輸入/輸出 34
2.6.1 標(biāo)準(zhǔn)輸入流 35
2.6.2 標(biāo)準(zhǔn)輸出流 35
編程技能 36
等于號(hào)和雙等于號(hào) 36
sizeof運(yùn)算符 37
輸出格式控制 37
使用string類(lèi)型處理字符串 42
刨根問(wèn)底 45
磁盤(pán)文件是什么 45
本章小結(jié) 48
習(xí)題和思考題 48
第3章 控制語(yǔ)句 52
基本知識(shí) 52
3.1 算法的基本控制結(jié)構(gòu) 52
3.1.1 程序的3種控制結(jié)構(gòu) 52
3.1.2 算法及其表示 53
3.2 選擇結(jié)構(gòu) 54
3.2.1 if選擇語(yǔ)句 54
3.2.2 switch選擇語(yǔ)句 60
3.3 循環(huán)結(jié)構(gòu) 62
3.3.1 while循環(huán)語(yǔ)句 62
3.3.2 do-while循環(huán)語(yǔ)句 64
3.3.3 for循環(huán)語(yǔ)句 65
3.4 break語(yǔ)句和continue語(yǔ)句 67
編程技能 69
隨機(jī)數(shù) 69
結(jié)構(gòu)嵌套 70
刨根問(wèn)底 74
跟蹤程序的執(zhí)行 74
本章小結(jié) 80
習(xí)題和思考題 81
第4章 數(shù)組及自定義數(shù)據(jù)類(lèi)型 85
基本知識(shí) 85
4.1 數(shù)組 85
4.1.1 數(shù)組定義及初始化 85
4.1.2 訪問(wèn)數(shù)組元素 87
4.1.3 字符數(shù)組 88
4.1.4 多維數(shù)組 89
4.2 枚舉類(lèi)型 92
4.2.1 枚舉類(lèi)型定義 92
4.2.2 枚舉變量定義及使用 93
4.3 結(jié)構(gòu)類(lèi)型 94
4.3.1 結(jié)構(gòu)類(lèi)型的定義和初始化 95
4.3.2 結(jié)構(gòu)變量的定義和使用 95
4.4 聯(lián)合類(lèi)型 98
編程技能 100
字符數(shù)組與字符串 100
多維數(shù)組 102
冒泡排序 105
結(jié)構(gòu)數(shù)組 108
刨根問(wèn)底 109
字符數(shù)組的輸入和輸出 109
多維數(shù)組在內(nèi)存中的存放 111
枚舉類(lèi)型的內(nèi)存空間 112
結(jié)構(gòu)類(lèi)型的內(nèi)存空間 112
本章小結(jié) 113
習(xí)題和思考題 113
第5章 函數(shù) 116
基本知識(shí) 116
5.1 函數(shù)概述 116
5.1.1 自定義函數(shù)概述 116
5.1.2 庫(kù)函數(shù)概述 117
5.2 函數(shù)的定義 118
5.2.1 定義函數(shù) 118
5.2.2 函數(shù)原型 120
5.2.3 return語(yǔ)句 122
5.3 函數(shù)的調(diào)用 124
5.4 全局變量與局部變量 126
5.4.1 局部變量 126
5.4.2 全局變量 126
5.4.3 作用域 127
5.4.4 可見(jiàn)性 128
5.5 結(jié)構(gòu)化程序設(shè)計(jì) 129
5.5.1 多文件結(jié)構(gòu) 129
5.5.2 編譯預(yù)處理 132
編程技能 136
遞歸函數(shù) 136
內(nèi)聯(lián)函數(shù) 138
重載函數(shù) 139
帶默認(rèn)參數(shù)值的函數(shù) 141
刨根問(wèn)底 142
變量的存儲(chǔ)類(lèi)型和生存期 142
函數(shù)調(diào)用的執(zhí)行機(jī)制 145
參數(shù)的傳遞機(jī)制 147
本章小結(jié) 150
習(xí)題和思考題 150
第6章 指針和引用 153
基本知識(shí) 153
6.1 指針 153
6.1.1 地址和指針變量 153
6.1.2 指針的定義和初始化 153
6.1.3 指針的使用 155
6.2 動(dòng)態(tài)內(nèi)存 157
6.2.1 C語(yǔ)言的動(dòng)態(tài)內(nèi)存申請(qǐng)和釋放 157
6.2.2 C++的動(dòng)態(tài)內(nèi)存申請(qǐng)和釋放 157
6.3 引用 159
6.3.1 引用的聲明 159
6.3.2 引用的使用 160
編程技能 160
指針與函數(shù) 160
指針與字符串 166
指針與數(shù)組 169
指針與結(jié)構(gòu)體 173
刨根問(wèn)底 177
void類(lèi)型的指針 177
內(nèi)存泄漏和指針懸掛 178
本章小結(jié) 179
習(xí)題和思考題 179
第7章 類(lèi)與對(duì)象 183
基本知識(shí) 183
7.1 類(lèi)和對(duì)象的定義 183
7.1.1 基本概念 183
7.1.2 類(lèi)的聲明 184
7.1.3 類(lèi)的實(shí)現(xiàn) 186
7.1.4 對(duì)象的定義和使用 188
7.1.5 類(lèi)的作用域與可見(jiàn)性 189
7.2 構(gòu)造函數(shù) 190
7.3 析構(gòu)函數(shù) 195
7.4 面向?qū)ο蟪绦蛟O(shè)計(jì) 197
7.4.1 類(lèi)的封裝性 197
7.4.2 軟件工程 197
7.4.3 面向?qū)ο蠓治?198
7.4.4 面向?qū)ο笤O(shè)計(jì) 198
7.4.5 面向?qū)ο蟮囊饬x 199
編程技能 200
對(duì)象數(shù)組 200
使用對(duì)象傳遞函數(shù)參數(shù) 205
對(duì)象指針和堆對(duì)象 208
刨根問(wèn)底 209
this指針 209
復(fù)制構(gòu)造函數(shù) 210
內(nèi)部類(lèi)和命名空間 212
本章小結(jié) 214
習(xí)題和思考題 214
第8章 繼承 220
基本知識(shí) 220
8.1 繼承的概念 220
8.2 基類(lèi)和派生類(lèi) 221
8.2.1 簡(jiǎn)單的繼承和派生 221
8.2.2 定義派生類(lèi) 223
8.2.3 繼承方式和訪問(wèn)控制 224
8.2.4 同名覆蓋 226
8.3 派生類(lèi)的構(gòu)造和析構(gòu) 226
8.3.1 基類(lèi)只有無(wú)參構(gòu)造函數(shù) 226
8.3.2 派生類(lèi)構(gòu)造函數(shù) 227
8.3.3 派生類(lèi)的析構(gòu)函數(shù) 231
8.4 虛基類(lèi) 232
8.4.1 多繼承與二義性 232
8.4.2 虛基類(lèi) 235
編程技能 235
在主函數(shù)中增加調(diào)試信息 235
刨根問(wèn)底 237
同名覆蓋與重載 237
轉(zhuǎn)換與繼承 238
本章小結(jié) 241
習(xí)題和思考題 241
第9章 類(lèi)的特殊成員 246
基本知識(shí) 246
9.1 類(lèi)的靜態(tài)成員 246
9.1.1 靜態(tài)數(shù)據(jù)成員 246
9.1.2 靜態(tài)成員函數(shù) 248
9.2 常對(duì)象和常成員 249
9.2.1 常對(duì)象 249
9.2.2 常成員 249
9.3 類(lèi)的組合 252
9.4 友元 254
9.5 運(yùn)算符重載 258
9.5.1 運(yùn)算符重載的使用及其限制 258
9.5.2 運(yùn)算符重載的定義 259
編程技能 262
包含內(nèi)嵌對(duì)象的派生類(lèi)構(gòu)造 262
包含內(nèi)嵌對(duì)象的派生類(lèi)析構(gòu) 270
刨根問(wèn)底 272
賦值運(yùn)算符重載 272
本章小結(jié) 274
習(xí)題和思考題 275
第10章 多態(tài) 277
基本知識(shí) 277
10.1 多態(tài)的概念 277
10.2 運(yùn)行時(shí)多態(tài) 278
10.2.1 虛函數(shù) 279
10.2.2 虛析構(gòu)函數(shù) 281
10.2.3 純虛函數(shù)與抽象類(lèi) 281
10.3 模板多態(tài) 282
10.3.1 函數(shù)模板 282
10.3.2 類(lèi)模板 286
編程技能 290
函數(shù)模板 290
運(yùn)行時(shí)多態(tài) 293
刨根問(wèn)底 300
重載與靜態(tài)聯(lián)編 300
覆蓋與靜態(tài)聯(lián)編 300
虛函數(shù)與動(dòng)態(tài)聯(lián)編 301
本章小結(jié) 302
習(xí)題和思考題 303
第11章 異常處理 309
基本知識(shí) 309
11.1 異常和異常處理 309
11.2 C++異常處理機(jī)制 311
11.3 用類(lèi)對(duì)象傳遞異常 314
編程技能 316
用戶(hù)自定義類(lèi)的對(duì)象傳遞異常 316
自定義exception類(lèi)的派生類(lèi)對(duì)象
傳遞異常 318
刨根問(wèn)底 320
異常處理中的退棧和對(duì)象析構(gòu) 320
本章小結(jié) 323
習(xí)題和思考題 324
附錄 常用C/C++庫(kù) 327
附錄1 C語(yǔ)言文件的輸入/輸出 327
一、打開(kāi)和關(guān)閉文件 327
二、寫(xiě)文件 328
三、讀文件 328
四、文件的隨機(jī)訪問(wèn) 329
附錄2 I/O流類(lèi) 329
一、標(biāo)準(zhǔn)輸出流對(duì)象 330
二、標(biāo)準(zhǔn)輸入流對(duì)象 331
三、文件輸出流 332
四、文件輸入流 333
附錄3 string類(lèi) 333
一、string對(duì)象的初始化 334
二、string對(duì)象的基本操作 334
附錄4 vector類(lèi) 335
參考文獻(xiàn) 338