C++語言是一門傳統的計算機程序設計高級語言,它兼有面向過程和面向對象的程序設計的特點,一直是一門應用面非常廣泛、長盛不衰的計算機程序設計語言,是普通高等院校為計算機、信息、電子等工科專業(yè)開設的計算機程序設計的首選和主要的語言,本書主要內容有C++語言中每種語法成分的定義和作用,每種語句的組成和作用,順序、分支、循環(huán)等基本程序設計方法,常量、變量、函數、表達式、文件等基本數據(運算)對象的使用,類的封裝、繼承、多態(tài)等面向對象的特性。
在寫作風格和手法上力求體現便
于閱讀和自學的特點,文字敘述淺顯易懂,內容安排循序漸進,問題
分析簡明透徹,整體結構貫通一體
C++語言程序設計課程是普通高等院校計算機、軟件、信息
等專業(yè)的專業(yè)基礎課或通識課程,目的是讓學生了解和掌握進行計
算機程序設計的基本概念、知識和方法,為后續(xù)學習專業(yè)課程打下
良好基礎。
《C++語言程序設計》是為普通高等院校初學計算機程序設計
語言的學生編寫的教材。全書共10章,形成了一個完整體系,從頭
到尾逐次展開,層層遞進,環(huán)環(huán)相扣。在寫作手法和意圖上,盡量
做到深入淺出,條理有序,使文字敘述和舉例說明互為印證,相得
益彰,以此降低學習難度,提高學習興趣,便于教學以及讀者自學
和參考。
本書第1章 C++語言概述,詳細介紹了 C++語言中的基本
語法規(guī)則和程序組成,以及上機操作和運行 C++語言程序的集成
開發(fā)環(huán)境與一般過程,為學好后續(xù)章節(jié)做好鋪墊。第2章數據類型
和表達式,學習它能夠在程序設計中正確地定義和使用數據對象,
從而達到運算和處理數據的目的。第 3 章流程控制語句,介紹了
C++語言中所有分支、循環(huán)、轉向類語句,這些是構成 C++程
序功能模塊(函數)的基本語句。第4章數組和字符串,利用它們能
夠使計算機程序保存和處理具有相同類型的大量數據。第5章指針,
它是用來訪問數據對象的另一種方法和途徑,有時比直接使用變量
訪問數據更簡便和有效。第6章函數,介紹了函數的定義、聲明和
調用,每個 C++程序都是由一個或若干個函數模塊組成的,通過
函數之間的調用和返回,實現整個程序運行的全過程。第7章結構
與聯合,在程序設計中利用它們能夠保存和處理具有相同記錄格式
的表格文檔中的大量數據。第8章類與對象,介紹了一種較復雜的
用戶自定義數據類型———類,它既包含狀態(tài)又包含行為,由它定義
出的對象既具有狀態(tài)特征,又具有行為特征,而且能夠把屬于自己
的特征很好地隱藏起來。第9章類的繼承與多態(tài),同第8章一起構
成了面向對象程序設計的基礎,使 C語言發(fā)展和提升為既面向過程
又面向對象的 C++程序設計語言。第10章 C++流,介紹了數據
文件的定義和使用,利用它能夠訪問和處理永久保存在外部介質上
1
■ C++語言程序設計
的數據文件。
本書的每一章都配有多樣而豐富的課后練習題,供讀者練習和使用,以便檢查學
習效果。課后練習題參考解答將通過出版社網站免費提供。
盡管我們做出了很大努力,由于水平有限,本書中難免存在不足或錯誤,敬請廣
大師生和讀者給予批評指正。
作 者
2021年秋于北京
徐孝凱,男,教授,國家開放大學(中央廣播電視大學)計算機科學與技術專業(yè)《C語言程序設計》課程主講。1955年3月出生,1982年8月畢業(yè)于南京理工大學計算機系,現任國家開放大學(中央廣播電視大學)理工教學部計算機科學與技術學院教授。
第1章 C++語言概述 /1
1.1 引言…………………………………………………… 1
1.2 C++字符集 ………………………………………… 2
1.3 C++單詞 …………………………………………… 4
1.4 C++語句 …………………………………………… 6
1.5 C++函數 …………………………………………… 7
1.6 C++程序結構 …………………………………… 12
1.7 VC++ 6.0集成開發(fā)環(huán)境 ……………………… 14
習題1 ……………………………………………………… 25
第2章 數據類型和表達式 /28
2.1 數據類型 …………………………………………… 28
2.2 常量 ………………………………………………… 31
2.3 變量 ………………………………………………… 35
2.4 運算符和表達式 …………………………………… 39
2.5 常用的系統函數 …………………………………… 47
習題2 ……………………………………………………… 52
第3章 流程控制語句 /57
3.1 概述 ………………………………………………… 57
3.2 選擇類語句 ………………………………………… 57
3.3 循環(huán)類語句 ………………………………………… 66
3.4 跳轉類語句 ………………………………………… 82
習題3 ……………………………………………………… 85
1
■ C++語言程序設計
第4章 數組和字符串 /92
4.1 數組的概念 ……………………………………………………………… 92
4.2 一維數組 ………………………………………………………………… 93
4.3 二維數組 ………………………………………………………………… 97
4.4 使用typedef語句定義數組類型 …………………………………… 102
4.5 數組的應用 ……………………………………………………………… 104
4.6 字符串 …………………………………………………………………… 115
4.6.1 字符串的概念 ……………………………………………………… 115
4.6.2 字符串函數 ………………………………………………………… 118
4.6.3 字符串應用實例 …………………………………………………… 121
4.6.4 字符串類型 ………………………………………………………… 125
習題4…………………………………………………………………………… 127
第5章 指針 /132
5.1 指針的概念 ……………………………………………………………… 132
5.2 指針變量 ………………………………………………………………… 133
5.3 指針運算 ………………………………………………………………… 139
5.4 指針與數組 ……………………………………………………………… 142
5.4.1 指針與一維數組 …………………………………………………… 142
5.4.2 指針與二維數組 …………………………………………………… 145
5.5 引用變量 ………………………………………………………………… 146
5.6 動態(tài)存儲分配…………………………………………………………… 148
習題5…………………………………………………………………………… 155
第6章 函數 /161
6.1 函數定義 ………………………………………………………………… 161
6.1.1 函數定義格式 ……………………………………………………… 161
6.1.2 函數定義格式舉例 ………………………………………………… 162
6.1.3 有關函數定義的幾點說明 ………………………………………… 163
6.2 函數調用 ………………………………………………………………… 165
6.2.1 函數調用格式 ……………………………………………………… 165
6.2.2 函數調用過程 ……………………………………………………… 166
6.2.3 函數調用舉例 ……………………………………………………… 169
6.3 變量作用域 ……………………………………………………………… 173
6.3.1 作用域分類 ………………………………………………………… 173
2
目 錄 ■
6.3.2 具有不同作用域對象的程序舉例 ………………………………… 175
6.4 遞歸函數 ………………………………………………………………… 181
6.5 函數重載 ………………………………………………………………… 184
6.6 模板函數 ………………………………………………………………… 186
6.7 函數指針 ………………………………………………………………… 191
習題6…………………………………………………………………………… 193
第7章 結構與聯合 /198
7.1 結構和聯合的概念 …………………………………………………… 198
7.2 結構的定義 ……………………………………………………………… 198
7.3 結構變量的定義和初始化 …………………………………………… 202
7.4 結構成員的訪問 ……………………………………………………… 205
7.5 使用結構的程序舉例 ………………………………………………… 205
7.6 結構與函數 ……………………………………………………………… 210
7.7 結構與運算符重載 …………………………………………………… 213
7.7.1 運算符重載的概念 ………………………………………………… 213
7.7.2 用一般函數實現對自定義數據類型的運算功能 ………………… 214
7.7.3 用運算符重載函數實現對自定義數據類型的運算功能 ………… 217
7.7.4 運算符重載函數應用舉例 ………………………………………… 221
7.8 結構與鏈表 ……………………………………………………………… 224
7.9 聯合 ……………………………………………………………………… 229
習題7…………………………………………………………………………… 236
第8章 類與對象 /243
8.1 類的概念與定義 ……………………………………………………… 243
8.2 類的運算符重載成員函數 …………………………………………… 249
8.3 構造函數 ………………………………………………………………… 253
8.3.1 無參構造函數和帶參構造函數 …………………………………… 253
8.3.2 拷貝構造函數 ……………………………………………………… 258
8.3.3 賦值重載函數 ……………………………………………………… 259
8.3.4 構造函數中的初始化表 …………………………………………… 260
8.4 析構函數 ………………………………………………………………… 261
8.5 友元函數和友元類 …………………………………………………… 263
8.6 類的應用舉例…………………………………………………………… 269
習題8…………………………………………………………………………… 276
3
■ C++語言程序設計
第9章 類的繼承與多態(tài) /283
9.1 類的繼承 ………………………………………………………………… 283
9.1.1 類的繼承性的概念 ………………………………………………… 283
9.1.2 派生類定義的格式 ………………………………………………… 283
9.1.3 派生類定義格式舉例 ……………………………………………… 285
9.1.4 派生類應用舉例 …………………………………………………… 293
9.2 類的虛函數與多態(tài)性 ………………………………………………… 297
9.3 類的靜態(tài)成員…………………………………………………………… 302
9.3.1 靜態(tài)數據成員 ……………………………………………………… 302
9.3.2 靜態(tài)函數成員 ……………………………………………………… 304
9.4 模板類 …………………………………………………………………… 305
習題9…………………………………………………………………………… 314
第10章 C++流 /321
10.1 C++流的概念 ……………………………………………………… 321
10.2 輸入輸出格式控制 …………………………………………………… 323
10.2.1 ios類中的枚舉類型 ……………………………………………… 323
10.2.2 ios類中的成員函數 ……………………………………………… 325
10.2.3 格式控制符 ………………………………………………………… 328
10.3 文件操作 ……………………………………………………………… 331
10.3.1 文件的概念 ………………………………………………………… 331
10.3.2 文件的打開和關閉 ………………………………………………… 333
10.3.3 字符文件的訪問操作 ……………………………………………… 335
10.3.4 字節(jié)文件的訪問操作 ……………………………………………… 343
10.4 字符串流 ……………………………………………………………… 350
習題10 352
附錄 ASCII代碼表 /358
參考文獻 /359