介紹了C++程序的運行方式、基本數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型、循環(huán)和關(guān)系表達式、分支語句和邏輯運算符、函數(shù)重載和函數(shù)模板、內(nèi)存模型和名稱空間、類的設(shè)計和使用、多態(tài)、虛函數(shù)、動態(tài)內(nèi)存分配、繼承、代碼重用、友元、異常處理技術(shù)、string類和標準模板庫、輸入/輸出、C++11新增功能等內(nèi)容。
本書循序漸進地介紹了C++程序設(shè)計的相關(guān)概念、方法。內(nèi)容上突出工程特色,以工程教育為理念,圍繞培養(yǎng)應(yīng)用創(chuàng)新型工程人才這一目標,著重學(xué)生的獨立研究能力、動手能力和解決實際問題能力的培養(yǎng),將測控技術(shù)與儀器專業(yè)工程人才培養(yǎng)模式和教學(xué)內(nèi)容的改革成果體現(xiàn)在教材中,通過科學(xué)規(guī)范的工程人才教材建設(shè)促進專業(yè)建設(shè)和工程人才培養(yǎng)質(zhì)量的提高。
全書共12章。第1章介紹了進行C++語言程序設(shè)計的預(yù)備知識,包括數(shù)制、數(shù)據(jù)的表示方法,介紹了C++語言開發(fā)工具;第2章介紹了C++語言程序設(shè)計中的數(shù)據(jù)類型與表達式;第3章介紹了基于過程的程序設(shè)計方法,主要包括輸入/輸出流、關(guān)系運算與邏輯運算、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等內(nèi)容;第4章介紹了函數(shù)與預(yù)處理方法,介紹了常見的函數(shù)形式與用法;第5章介紹了數(shù)組的概念、創(chuàng)建方法及使用方法;第6章介紹了指針的概念,并對指針的應(yīng)用進行詳細解析;第7章介紹了自定義數(shù)據(jù)類型,包括結(jié)構(gòu)體類型、鏈表、共用體等內(nèi)容;第8章介紹了類,這是面向?qū)ο缶幊讨凶罨镜母拍睿敿毥榻B了類的定義及使用方法、構(gòu)造函數(shù)與析構(gòu)函數(shù)及對象的使用方法;第9章介紹了運算符重載的定義、方法、規(guī)則等內(nèi)容;第10章介紹了繼承和派生的概念及工作方式;第11章介紹了多態(tài)性的概念、虛函數(shù)的定義與使用方法;第12章介紹了輸入/輸出流的常用函數(shù)及使用方法。
本書第1、8章由徐耀松執(zhí)筆;第2、3、5、9、10章由郭磊執(zhí)筆;第4、6、7章由尹玉萍執(zhí)筆;第11章由王丹丹、屠乃威、馬玉芳、謝國民共同執(zhí)筆;第12章由郭磊和徐耀松共同執(zhí)筆。全書的寫作思路由付華教授提出,由付華和徐耀松統(tǒng)稿。此外,李猛、任仁、陶艷風(fēng)、代巍、湯月、司南楠、陳東、謝鴻、郭玉雯、于田、孟繁東、曹坦坦等也參加了本書的編寫。在此,向?qū)Ρ緯耐瓿山o予了熱情幫助的同行們表示感謝。
由于作者的水平有限,加上時間倉促,書中的錯誤和不妥之處,敬請讀者批評指正。
徐耀松(1979.2-),河北滄州人,博士后,副教授,遼寧省優(yōu)秀青年骨干教師。畢業(yè)于天津大學(xué)精密測試技術(shù)與儀器國家重點實驗室。先后獲得遼寧省科技進步獎二等獎、中國煤炭工業(yè)協(xié)會科學(xué)技術(shù)二等獎、國家安全生產(chǎn)總局第三屆安全生產(chǎn)科技成果三等獎、阜新市科技進步一等獎、遼寧省普通高等教育本科教學(xué)成果獎獲獎三等獎等省部級科技獎勵。在《傳感技術(shù)學(xué)報》、《納米技術(shù)與精密工程》、《計算機工程》等國內(nèi)外期刊發(fā)表論文二十余篇,EI檢索3篇。申報獲得國家專利8項。主持參與遼寧省教育廳基金、國家自然科學(xué)基金以及企業(yè)項目多項。主要研究方向:煤礦瓦斯災(zāi)害前兆信息的采集、分析、特征提取和災(zāi)害預(yù)測;聲源信號時延估計與定位方法研究;工業(yè)遠程監(jiān)控系統(tǒng)開發(fā);嵌入式系統(tǒng)設(shè)計。
第1章 預(yù)備知識 (1)
1.1 C++簡介 (1)
1.2 計算機數(shù)據(jù)表示方法 (2)
1.2.1 二進制、八進制、十六進制 (3)
1.2.2 表示數(shù)據(jù)的字節(jié)和位 (5)
1.2.3 內(nèi)存 (5)
1.3 C++開發(fā)工具 (7)
第2章 C++的數(shù)據(jù)類型 (13)
2.1 C++的數(shù)據(jù)類型 (13)
2.2 常量 (14)
2.2.1 數(shù)值常量 (15)
2.2.2 字符常量和字符串常量 (15)
2.2.3 布爾常量 (17)
2.2.4 符號常量 (17)
2.3 變量 (18)
2.3.1 變量名規(guī)則 (18)
2.3.2 定義變量 (18)
2.3.3 對變量賦初值 (18)
2.3.4 常變量 (19)
2.4 C++的運算符 (19)
2.5 算術(shù)運算符與算術(shù)表達式 (20)
2.5.1 基本的算術(shù)運算符 (20)
2.5.2 算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性 (20)
2.5.3 表達式中各類數(shù)值型數(shù)據(jù)間的混合運算 (21)
2.5.4 自增(++)和自減(--)運算符 (21)
2.6 賦值運算符和賦值表達式 (22)
2.6.1 賦值運算符和賦值表達式概述 (22)
2.6.2 賦值過程中的類型轉(zhuǎn)換 (22)
2.6.3 復(fù)合賦值運算符 (22)
2.7 逗號運算符和逗號表達式 (23)
2.8 強制類型轉(zhuǎn)換運算符 (23)
思考與練習(xí) (24)
第3章 基于過程的程序設(shè)計 (26)
3.1 基于過程的程序設(shè)計和算法 (26)
3.1.1 算法的概念 (26)
3.1.2 算法的表示 (27)
3.2 C++的程序結(jié)構(gòu)和C++語句 (28)
3.3 C++的輸入與輸出 (29)
3.3.1 輸入流與輸出流的基本操作 (29)
3.3.2 在標準輸入流與輸出流中使用控制符 (31)
3.3.3 用getchar和putchar函數(shù)進行字符的輸入和輸出 (33)
3.3.4 用scanf和printf函數(shù)進行輸入和輸出 (34)
3.4 編寫順序結(jié)構(gòu)的程序 (35)
3.5 關(guān)系運算和邏輯運算 (36)
3.5.1 關(guān)系運算和關(guān)系表達式 (36)
3.5.2 邏輯常量與邏輯變量 (37)
3.5.3 邏輯運算和邏輯表達式 (38)
3.6 選擇結(jié)構(gòu)和if語句 (39)
3.6.1 if語句的形式 (39)
3.6.2 if語句的嵌套 (42)
3.6.3 條件運算符和條件表達式 (43)
3.6.4 多分支選擇結(jié)構(gòu)與switch語句 (44)
3.7 循環(huán)結(jié)構(gòu)和循環(huán)語句 (46)
3.7.1 用while語句構(gòu)成循環(huán) (46)
3.7.2 用do…while語句構(gòu)成循環(huán) (47)
3.7.3 用for語句構(gòu)成循環(huán) (49)
3.7.4 循環(huán)嵌套 (50)
3.7.5 break語句和continue語句 (51)
3.7.6 循環(huán)結(jié)構(gòu)程序設(shè)計舉例 (52)
思考與練習(xí) (55)
第4章 函數(shù)與預(yù)處理 (57)
4.1 函數(shù)概述 (57)
4.2 函數(shù)定義與函數(shù)聲明 (59)
4.2.1 定義無參函數(shù)的一般形式 (59)
4.2.2 定義有參函數(shù)的一般形式 (59)
4.2.3 函數(shù)聲明 (60)
4.3 函數(shù)的調(diào)用 (62)
4.3.1 函數(shù)調(diào)用的一般形式 (62)
4.3.2 函數(shù)調(diào)用的方式 (64)
4.3.3 函數(shù)的返回值 (64)
4.3.4 函數(shù)的值傳遞方式 (65)
4.4 內(nèi)置函數(shù) (66)
4.5 函數(shù)的重載 (67)
4.6 有默認參數(shù)的函數(shù) (68)
4.7 函數(shù)模板 (69)
4.8 函數(shù)的嵌套調(diào)用 (70)
4.9 函數(shù)的遞歸調(diào)用 (71)
4.10 局部變量和全局變量 (76)
4.10.1 局部變量 (76)
4.10.2 全局變量 (77)
4.11 變量的存儲類別 (79)
4.11.1 動態(tài)存儲方式與靜態(tài)存儲方式 (79)
4.11.2 自動變量 (79)
4.11.3 用static聲明靜態(tài)局部變量 (80)
4.11.4 用register聲明寄存器變量 (81)
4.11.5 用extern聲明外部變量 (81)
4.12 內(nèi)部函數(shù)和外部函數(shù) (83)
4.12.1 內(nèi)部函數(shù) (83)
4.12.2 外部函數(shù) (84)
4.13 預(yù)處理命令 (85)
4.13.1 文件包含 (85)
4.13.2 條件編譯 (86)
4.13.3 宏定義 (86)
4.13.4 關(guān)于C++標準庫 (87)
思考與練習(xí) (88)
第5章 數(shù)組 (90)
5.1 數(shù)組的概念 (90)
5.2 一維數(shù)組的定義和引用 (91)
5.2.1 一維數(shù)組的定義 (91)
5.2.2 一維數(shù)組元素的引用 (92)
5.2.3 一維數(shù)組的初始化 (93)
5.3 二維數(shù)組的定義和引用 (97)
5.3.1 二維數(shù)組定義的一般格式 (97)
5.3.2 二維數(shù)組元素的引用 (97)
5.3.3 二維數(shù)組的初始化 (98)
5.3.4 二維數(shù)組應(yīng)用舉例 (98)
5.4 用數(shù)組名做函數(shù)參數(shù) (100)
5.5 字符數(shù)組 (102)
5.5.1 字符數(shù)組的定義和初始化 (103)
5.5.2 字符串處理函數(shù) (105)
5.5.3 字符數(shù)組應(yīng)用舉例 (107)
5.6 C++處理字符串的方法―字符串類與字符串變量 (108)
思考與練習(xí) (111)
第6章 指針 (112)
6.1 什么是指針 (112)
6.2 變量與指針 (113)
6.2.1 定義指針變量 (114)
6.2.2 指針變量賦值 (115)
6.2.3 引用指針變量 (116)
6.2.4 指針作為函數(shù)參數(shù) (116)
6.3 數(shù)組與指針 (119)
6.3.1 指向數(shù)組元素的指針變量 (119)
6.3.2 指針的運算 (119)
6.3.3 通過指針引用數(shù)組元素 (120)
6.3.4 用數(shù)組名做函數(shù)參數(shù) (122)
6.4 字符串與指針 (126)
6.4.1 字符串的表示方法 (126)
6.4.2 字符指針做函數(shù)參數(shù) (128)
6.4.3 字符指針與字符數(shù)組的區(qū)別 (128)
6.5 函數(shù)與指針 (129)
6.5.1 函數(shù)的指針和指向函數(shù)的指針變量 (129)
6.5.2 返回指針值的函數(shù) (130)
6.6 指針數(shù)組和指向指針的指針 (130)
6.6.1 指針數(shù)組的概念 (130)
6.6.2 指向指針的指針 (131)
6.7 指針運算小結(jié) (132)
6.8 引用 (133)
6.8.1 什么是變量的引用 (133)
6.8.2 引用作為函數(shù)參數(shù) (134)
思考與練習(xí) (135)
第7章 自定義數(shù)據(jù)類型 (137)
7.1 結(jié)構(gòu)體類型 (137)
7.1.1 結(jié)構(gòu)體類型的定義 (137)
7.1.2 結(jié)構(gòu)體變量的定義 (139)
7.1.3 結(jié)構(gòu)體變量的初始化 (141)
7.1.4 結(jié)構(gòu)體變量的引用 (142)
7.1.5 結(jié)構(gòu)體數(shù)組 (143)
7.1.6 指向結(jié)構(gòu)體變量的指針 (145)
7.1.7 結(jié)構(gòu)體數(shù)據(jù)做函數(shù)參數(shù) (148)
7.1.8 動態(tài)內(nèi)存分配 (150)
7.2 共用體 (152)
7.2.1 共用體的定義 (152)
7.2.2 共用體變量的引用 (153)
7.2.3 共用體的特點 (154)
7.2.4 共用體變量的應(yīng)用 (154)
7.3 枚舉類型 (156)
7.4 用typedef定義類型 (156)
思考與練習(xí) (157)
第8章 類和對象 (159)
8.1 類 (160)
8.1.1 類的定義 (160)
8.1.2 類成員的可見性 (162)
8.1.3 類的數(shù)據(jù)成員 (164)
8.1.4 類的成員函數(shù) (165)
8.1.5 類與結(jié)構(gòu)的區(qū)別 (170)
8.2 對象 (170)
8.2.1 對象的創(chuàng)建 (170)
8.2.2 訪問對象的成員 (171)
8.2.3 類與對象的關(guān)系 (173)
8.3 this指針 (174)
8.4 構(gòu)造函數(shù) (175)
8.5 析構(gòu)函數(shù) (176)
8.6 調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的順序 (179)
8.6.1 實例1 (179)
8.6.2 實例2 (181)
8.7 對象數(shù)組 (182)
8.8 對象指針 (186)
8.8.1 對象指針和對象引用 (186)
8.8.2 對象指針和對象引用做函數(shù)參數(shù) (188)
8.9 共用數(shù)據(jù)的保護 (190)
8.9.1 常對象 (190)
8.9.2 常成員函數(shù) (191)
8.10 對象的動態(tài)建立和釋放 (192)
8.11 對象的賦值和復(fù)制 (195)
8.11.1 對象的賦值 (195)
8.11.2 對象的復(fù)制 (197)
8.12 靜態(tài)成員 (201)
8.12.1 靜態(tài)數(shù)據(jù)成員 (201)
8.12.2 靜態(tài)函數(shù)成員 (202)
8.13 友元 (203)
8.13.1 問題的提出 (203)
8.13.2 友元函數(shù) (204)
8.13.3 友元類 (205)
8.14 類模板 (206)
思考與練習(xí) (212)
第9章 運算符重載 (214)
9.1 什么是運算符重載 (214)
9.2 運算符重載的方法 (215)
9.3 C++運算符重載的規(guī)則 (218)
9.4 運算符重載函數(shù)作為類成員函數(shù)和友元函數(shù) (218)
9.5 重載雙目運算符 (220)
9.6 重載單目運算符 (222)
9.7 重載流插入運算符和流提取運算符 (225)
9.8 不同類型數(shù)據(jù)間的轉(zhuǎn)換 (227)
思考與練習(xí) (229)
第10章 繼承與派生 (230)
10.1 繼承與派生的概念 (231)
10.2 派生類的聲明方式 (232)
10.3 派生類的構(gòu)成 (233)
10.4 派生類成員的訪問屬性 (235)
10.4.1 公有繼承 (235)
10.4.2 私有繼承 (237)
10.4.3 保護成員和保護繼承 (238)
10.4.4 多級派生時的訪問屬性 (240)
10.5 派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù) (243)
10.5.1 基類構(gòu)造函數(shù)不包括參數(shù) (243)
10.5.2 基類構(gòu)造函數(shù)包括參數(shù) (244)
10.5.3 有子對象的派生類構(gòu)造函數(shù) (246)
10.5.4 多層派生時的構(gòu)造函數(shù) (248)
10.6 多重繼承 (251)
10.6.1 聲明多重繼承 (251)
10.6.2 多重繼承派生類的構(gòu)造函數(shù) (253)
10.6.3 多重繼承引起的二義性問題 (255)
10.6.4 虛基類 (258)
10.7 基類與派生類的轉(zhuǎn)換 (261)
10.8 繼承與組合 (264)
思考與練習(xí) (265)
第11章 多態(tài)性與虛函數(shù) (267)
11.1 多態(tài)性的概念 (267)
11.2 基類對象的指針指向派生類對象 (271)
11.3 虛函數(shù) (272)
11.3.1 虛函數(shù)的定義 (272)
11.3.2 虛函數(shù)的使用方法 (274)
11.3.3 虛函數(shù)與實函數(shù)的區(qū)別 (275)
11.3.4 在構(gòu)造函數(shù)和析構(gòu)函數(shù)中調(diào)用虛函數(shù) (278)
11.3.5 虛析構(gòu)函數(shù) (279)
11.4 純虛函數(shù)與抽象類 (282)
11.4.1 純虛函數(shù) (282)
11.4.2 抽象類 (284)
思考與練習(xí) (285)
第12章 輸入/輸出流 (288)
12.1 C++的輸入/輸出 (288)
12.1.1 輸入/輸出的含義 (288)
12.1.2 流與標準庫 (289)
12.2 標準輸出流 (290)
12.2.1 cout、cerr和clog流 (290)
12.2.2 格式輸出 (292)
12.2.3 用流成員函數(shù)put輸出字符串 (295)
12.3 標準輸入流 (296)
12.3.1 cin流 (296)
12.3.2 用于字符輸入的流成員函數(shù) (297)
12.4 文件操作與文件流 (299)
12.4.1 文件流 (299)
12.4.2 打開和關(guān)閉文件 (299)
12.4.3 對ASCII文件操作 (301)
12.4.4 二進制文件的讀寫操作 (303)
12.4.5 隨機訪問二進制文件 (306)
12.5 字符串流 (307)
思考與練習(xí) (309)
附錄A ASCII碼表 (310)
參考文獻 (314)