商品簡介
作者簡介
序
C++作為一種通用程序設計語言, 支持數據抽象、 面向對象編程、 泛型編程及底層的內存管理, 且兼容C語言, 是系統編程、 桌面應用、 服務器軟件、 嵌入式系統、 遊戲、 實時系統、 高性能計算等領域首選的編程語言, 也是人工智能及其各分支領域最受歡迎的編程語言之一。C++是高等學校理工科專業普遍開設的具有很強工程實踐性的一門課程, 也是程序設計課程的主流。
近年來, C++有了很大的發展, 尤其是C++11新標準的發佈, 給C++帶來了革命性變化, 正如C++創始人BjarneStroustrup所說“C++11看起來像一門新的語言”。C++11變得更加現代化和智能化, 大幅度擴充了C++ 98標準下的語言功能, 如類型自動推導、 lambda表達式、 並行編程、 移動語義等, 這些變化體現了C++與時俱進的活力, 它們不僅顯著提高了程序的開發效率和性能, 也使得語言更為統一、 易於教學。
自從C++11新標準發佈以來, 各大編譯器廠商和組織紛紛跟進對C++11的支持。在編寫本書的時候, 大部分主流的C++編譯器已經全面支持C++11, 比如GCC、 Microsoft Visual C++、 IntelC++、 Clang等編譯器。這給讀者學習C++11提供了良好的編程環境。因此, 無論從C++本身發展的角度還是從業界對C++需求的角度, 學習和使用C++11是大勢所趨。
讀者對象
本書包含C語言基本知識, 因此本書不僅適合已經有C語言基礎的讀者, 也適合沒有C語言基礎的讀者。編者認為, 沒有必要為了學習C++而先去學習C語言。雖然C++兼容C語言, 但C++中以面向對象為基礎的編程風格和C語言中以面向過程為基礎的編程風格是有明顯區別的。C語言的編程習慣會影響C++的學習, 編者認為C++可以作為入門語言來學習。
另外, 如果讀者已經學習了C++98標準下的語法, 通過本書可以快速掌握C++11新標準下的核心語言特性, 對原有C++程序進行結構改造和性能升級。
IVV本書特色
在培養“新工科”人才的時代要求和中國智能製造發展戰略背景下, 本書旨在培養讀者的編程思維和提高讀者的工程實踐能力, 通過簡明的例子, 結合常用算法和基本數據結構, 講解新標準下C++的特性和使用方法, 展現C++發展的重要成果和編程風格。
本書借鑒了國內外同類教材的優點, 在教學理念、 教學內容和教學方法上有很大的改動。因此, 本書有以下幾個鮮明特點:
● 推行C++11新標準, 緊隨時代發展步伐。相比於C++98標準, C++11新標準使得代碼編寫更簡單、 更高效, 開發的程序性能也更好。本書教學內容的選定以C++11新標準為基礎, 強調程序的開發效率和性能。
● 突出編程思維和編程習慣的培養, 提高編程素質。本書一方面從編譯器的視角出發, 來學習和理解C++語法, 從而更深層次地把握C++的特性, 為編寫高質量的程序夯實基礎。另一方面, 本書也非常注重編程習慣的養成, 比如代碼的書寫格式、 對象和函數的命名、 指針和引用的書寫等。良好的編程習慣對於提高編程素質具有重要作用。
● 強調語言運用, 提高工程實踐能力。把C++作為一種語言工具來學習, 摒棄以語法為主的教學方法, 通過一些常用算法和數據結構來展示如何利用C++解決實際問題。
● 注重編程興趣的培養。編程興趣是學好編程語言的關鍵, 為了激發讀者對語言學習的渴望, 本書在基礎知識部分包含了許多有趣的小遊戲, 比如猜字謎、 猜數字、 石頭剪刀布、 掃雷等常見的遊戲。
● 注重實際編程經驗的介紹。本書通過警示框提醒讀者容易出錯的知識點, 用提示框建議一些編程方法和編程習慣, 幫助讀者理解一些語法細節。
本書非常注重知識點的安排, 從一開始就介紹面向對象編程和標準庫中基本類對象的使用, 強調對現代高級語言特性的理解。比如, 本書強化對象意識, 拋棄變量的概念, 在介紹對象時就強化了對象是數據和操作的載體的意識。在講解數組時, 便介紹了標準庫中string和vector的使用方法。這樣做的好處是, 避免低級語言特性先入為主, 造成讀者很難從面向過程的編程風格過渡到面向對象的編程風格的問題。
本書結構
本書的內容分為兩部分。第1部分為基礎篇, 主要介紹C++和標準庫的基礎內容。學完第1部分內容後, 讀者可以形成編程思維, 養成良好的編程習慣, 並能編寫出具有一定意義的程序。
第2部分為設計篇, 主要介紹基本數據結構、 內存管理、 面向對象程序設計方法、 泛型編程和標準模板庫。使用標準模板庫能夠提高代碼開發效率, 並保證代碼質量; 學習基本數據結構能夠幫助讀者更好地理解和使用標準庫中的容器與算法; 優化內存管理將會進一步提升程序的性能。學完第2部分內容後, 讀者將進一步理解C++的編程風格, 能夠利用面向對象和泛型技術編寫大型軟件。
教學安排
本書可以分為兩個學期進行教學。第1學期完成基礎篇教學, 側重於基本語法和常用算法, 培養學生的編程興趣, 使學生具備將解題思路轉化為代碼的能力。第2學期完成設計篇教學, 側重於程序基本構架的設計及語言的運用, 使學生具備一定的軟件架構能力。
建議本書授課72學時, 上機實驗32學時: 基礎篇授課40學時、 上機實驗16學時; 設計篇授課32學時、 上機實驗16學時。
致謝
本書內容由李長河主持編寫, 童恒建、 葉亞琴和楊鳴參與相關內容的編寫和審定, 中國地質大學(武漢)王俊臣、 刁義雅、 肖龍、 周力、 劉永峰、 夏海、黃祖傳等博士和碩士研究生參與了本書內容的校對及課後習題的編寫驗證工作。
本書所有示例代碼的源碼及其他配套教學資源可從以下網址獲得:
http://hxedu.com.cn或https://github.com/Changhe160/bookcplusplus。
感謝讀者選擇使用本書, 歡迎您對本書內容提出意見和建議, 我們將不勝感激。作者的電子郵件地址是: lichanghe@cug.edu.cn。
李長河
lichanghe@cug.edu.cn
于中國地質大學(武漢)
目次
第1 章 初識C++ 程序
1. 1 編寫一個簡單的C++ 程序
1. 2 認識類
1. 3 編譯與調試程序
習題1
第2 章 基本數據類型和表達式
2. 1 C++ 語句基本元素
2. 1. 1 標識符
2. 1. 2 關鍵字
2. 2 基本數據類型
2. 2. 1 內置類型
2. 2. 2 常量
2. 3 對象
2. 3. 1 對象的定義和初始化
2. 3. 2 對象的聲明
2. 3. 3 作用域和生命期
2. 4 常量修飾符和類型推導
2. 4. 1 const 修飾符
2. 4. 2 constexpr 和常量表達式
2. 4. 3 類型推導
2. 5 表達式
2. 5. 1 基本知識
2. 5. 2 算術運算符
2. 5. 3 賦值運算符
2. 5. 4 自增和自減運算符
2. 5. 5 邏輯和關係運算符
2. 5. 6 逗號運算符
2. 5. 7 條件運算符
2. 5. 8 sizeof 運算符
2. 5. 9 位運算符
2. 5. 10 求值次序
2. 6 類型轉換
2. 6. 1 隱式類型轉換
2. 6. 2 顯式類型轉換
習題2
第3 章 語句控制結構
3. 1 語句
3. 1. 1 空語句
3. 1. 2 複合語句
3. 1. 3 控制結構語句作用域
3. 2 分支結構
3. 2. 1 if 語句
3. 2. 2 switch 語句
3. 3 循環結構
3. 3. 1 while 語句
3. 3. 2 do while 語句
3. 3. 3 for 語句
3. 3. 4 循環語句的選擇
3. 4 跳轉語句
3. 4. 1 break 語句
3. 4. 2 continue 語句
3. 5 嵌套結構和應用實例
習題3
第4 章 複合類型、string 和vector
4. 1 引用
4. 1. 1 引用const 對象
4. 1. 2 auto 和引用
4. 1. 3 decltype 和引用
4. 1. 4 右值引用
4. 2 指針
4. 2. 1 指針的定義
4. 2. 2 改變指向
4. 2. 3 const 和指針
4. 2. 4 類型推導和指針
4. 2. 5 void 指針
4. 2. 6 多級指針
4. 2. 7 引用和指針
4. 3 數組
4. 3. 1 數組的定義和初始化
4. 3. 2 訪問數組元素
4. 3. 3 多維數組
4. 4 指針和數組
4. 4. 1 指針指向數組
4. 4. 2 利用指針訪問數組
4. 5 string 類型
4. 5. 1 string 類型常用操作
4. 5. 2 C 風格字符串
4. 6 vector 類型
4. 6. 1 定義和初始化vector對象
4. 6. 2 vector 類型常用操作
4. 6. 3 使用迭代器
4. 7 枚舉類型
4. 7. 1 定義枚舉類型
4. 7. 2 使用枚舉類型
習題4
第5 章 函數
5. 1 認識函數
5. 1. 1 定義函數
5. 1. 2 調用函數
5. 1. 3 調用規則
5. 1. 4 無參列表和void 返回類型
5. 1. 5 函數聲明
5. 2 局部對象和全域對象
5. 2. 1 存儲週期
5. 2. 2 局部對象
5. 2. 3 全域對象
5. 3 參數傳遞
5. 3. 1 值傳遞
5. 3. 2 引用傳遞
5. 3. 3 const 形參
5. 3. 4 數組形參
5. 4 返回值類型
5. 4. 1 無值返回
5. 4. 2 有值返回
5. 5 函數重載和特殊用途的函數
5. 5. 1 函數重載
5. 5. 2 默認參數
5. 5. 3 內聯函數
5. 5. 4 constexpr 函數
5. 6 函數指針和lambda 表達式
5. 6. 1 函數指針
5. 6. 2 lambda 表達式
5. 7 遞歸調用
5. 7. 1 遞推和回歸
5. 7. 2 遞歸和循環
5. 8 編譯預處理和多文件結構
5. 8. 1 宏定義
5. 8. 2 條件編譯
5. 8. 3 多文件結構
習題5
第6 章 類
6. 1 類的定義
6. 1. 1 定義一個類
6. 1. 2 定義和使用成員函數
6. 1. 3 定義輔助函數
6. 1. 4 訪問控制
6. 1. 5 友元
6. 2 構造函數與析構函數
6. 2. 1 默認構造函數
6. 2. 2 複製構造函數
6. 2. 3 析構函數
6. 3 運算符重載
6. 3. 1 基本概念
6. 3. 2 重載原則
6. 3. 3 輸入和輸出運算符
6. 3. 4 遞增和遞減運算符
6. 3. 5 函數調用運算符
6. 3. 6 類型轉換運算符
6. 4 靜態成員
6. 4. 1 聲明靜態成員
6. 4. 2 使用靜態成員
6. 5 類成員指針
6. 5. 1 數據成員指針
6. 5. 2 成員函數指針
習題6
第2 部分 設 計 篇
第7 章 模板與泛型編程
7. 1 函數模板
7. 1. 1 定義函數模板
7. 1. 2 實例化函數模板
7. 1. 3 模板參數類型
7. 1. 4 類成員模板
7. 1. 5 可變參函數模板
7. 2 類模板
7. 2. 1 成員函數定義
7. 2. 2 實例化類模板
7. 2. 3 默認模板參數
7. 3 排序與查找
7. 3. 1 排序算法
7. 3. 2 二分查找算法
習題7
第8 章 動態內存與數據結構
8. 1 動態內存
8. 1. 1 創建動態對象
8. 1. 2 釋放動態內存
8. 1. 3 內存洩漏
8. 1. 4 智能指針
8. 1. 5 動態數組
8. 2 拷貝控制淤
8. 2. 1 簡單字符串類
8. 2. 2 複製與賦值
8. 2. 3 移動對象
8. 3 線性鏈表
8. 3. 1 鏈表表示
8. 3. 2 插入操作
8. 3. 3 刪除操作
8. 3. 4 清空鏈表
8. 3. 5 打印鏈表
8. 3. 6 拷貝控制與友元聲明
8. 4 鏈棧
8. 4. 1 鏈棧表示與操作
8. 4. 2 簡單計算器
8. 5 二叉樹
8. 5. 1 二叉樹的概念和表示
8. 5. 2 創建二叉搜索樹
8. 5. 3 遍歷操作
8. 5. 4 搜索操作
8. 5. 5 銷毀操作
8. 5. 6 拷貝控制及友元聲明
習題8
第9 章 繼承與多態
9. 1 繼承
9. 1. 1 定義基類
9. 1. 2 定義派生類
9. 1. 3 訪問控制
9. 1. 4 類型轉換
9. 2 構造、拷貝控制與繼承
9. 2. 1 派生類對象的構造
9. 2. 2 拷貝控制與繼承
9. 3 虛函數與多態性
9. 3. 1 虛函數
9. 3. 2 動態綁定
9. 3. 3 抽象類
9. 3. 4 繼承與組
主題書展
更多主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。