對于想要學習c++ 的朋友們,這里小編分享一本關于學習c++的書——《我的第一本C++書》,這本書采用通俗易懂的語言,介紹c++中最重要最使用的知識,可以讓我們在講故事中輕松學會C++語言。
我的第一本c++書封面
我的第一本c++書目錄
第1篇 叩開C++世界的大門
第1章 C++世界地圖
1.1 C++是什么
1.2 C++的前世今生
1.2.1 從B到C
1.2.2 從C到C++
1.2.3 從C++到.NET Framework的CLI
1.2.4 最新標準C++0x讓C++重新煥發活力
1.2.5 C++和C#不得不說的那點事兒
1.2.6 C++世界的五大子語言
1.3 C++世界版圖
1.3.1 Windows系統下的C++開發
1.3.2 Linux系統下的C++開發
1.3.3 嵌入式系統下的C++開發
1.4 如何學好C++
1.4.1 將自然語言轉換為C++程序設計語言
1.4.2 “多讀多寫”是學好C++的不二法門
1.4.3 和Google做朋友
第2章 與C++第一次親密接觸
2.1 一個C++程序的自白
2.1.1 用Visual Studio創建C++程序
2.1.2 以手工方式創建C++程序
2.1.3 C++程序=預編譯指令+程序代碼+注釋
2.1.4 編譯器和鏈接器
2.1.5 C++程序的執行過程
2.1.6 程序的兩大任務:描述數據與處理數據
2.2 基本輸入/輸出流
2.2.1 標準的輸入和輸出對象
2.2.2 輸出格式控制
2.2.3 讀/寫文件
2.3 最常用的開發環境Visual Studio
2.3.1 Visual C++的常用菜單
2.3.2 Visual C++的常用視圖
2.4 C++世界旅行必備的物品
2.4.1 編程助手Visual Assist
2.4.2 代碼配置管理工具Visual Source Safe
2.4.3 Code Project和Code Guru
2.4.4 C++百科全書MSDN
第2篇 歡迎來到C++世界
第3章 C++世界眾生相
3.1 C++中的數據類型
3.2 變量和常量
3.2.1 聲明變量
3.2.2 給變量取個好名字
3.2.3 變量初始化
3.2.4 常量
3.2.5 用宏與const關鍵字定義常量
3.3 數值類型
3.3.1 整型數值類型
3.3.2 浮點型數值類型
3.4 布爾類型
3.5 字符串類型
3.5.1 字符類型
3.5.2 字符串類型
3.6 數組
3.6.1 數組的聲明與初始化
3.6.2 數組的使用
3.7 枚舉類型
3.8 用結構體類型描述復雜的事物
3.8.1 結構體的定義
3.8.2 結構體的使用
3.9 指向內存位置的指針
3.9.1 指針就是表示內存地址的數據類型
3.9.2 指針變量的定義
3.9.3 指針的賦值和使用
第4章 將語句編織成程序
4.1 用運算符對數據進行運算
4.1.1 用表達式表達設計意圖
4.1.2 算術運算符
4.1.3 賦值操作符
4.1.4 關系運算符
4.1.5 邏輯運算符
4.1.6 運算符之間的優先順序
4.1.7 將表達式組織成語句
4.2 條件選擇語句
4.2.1 if語句
4.2.2 并列選擇的switch語句
4.3 循環控制語句
4.3.1 while循環
4.3.2 do…while循環
4.3.3 for循環
4.3.4 循環控制:break和continue
4.4 從語句到程序
4.4.1 程序是控制語句串聯起來的語句
4.4.2 豪華工資統計程序
第5章 用函數封裝程序功能
5.1 函數就是一個大“箱子”
5.1.1 函數的聲明和定義
5.1.2 函數調用機制
5.1.3 函數的聲明與函數調用
5.1.4 函數參數的傳遞
5.1.5 函數的返回值
5.2 內聯函數
5.2.1 用體積換速度的內聯函數
5.2.2 內聯函數的使用規則
5.3 重載函數
5.3.1 重載函數的聲明
5.3.2 重載函數的解析
5.4 函數設計的基本規則
5.4.1 函數聲明的設計規則
5.4.2 函數體的設計規則
第6章 當C++愛上面向對象
6.1 從結構化設計到面向對象程序設計
6.1.1 “自頂向下,逐步求精”的結構化程序設計
6.1.2 面向對象程序設計
6.1.3 面向對象的三座基石:封裝、繼承與多態
6.2 類:當C++愛上面向對象
6.2.1 類的聲明和定義
6.2.2 使用類創建對象
6.2.3 構造函數和析構函數
6.2.4 拷貝構造函數
6.2.5 操作符重載
6.2.6 類成員的訪問控制
6.2.7 在友元中訪問類的隱藏信息
6.3 類如何面向對象
6.3.1 用類機制實現封裝
6.3.2 用基類和派生類實現繼承
6.3.3 用虛函數實現多態
6.4 實戰面向對象:工資管理系統
6.4.1 從問題描述中發現對象
6.4.2 分析對象的屬性和行為
6.4.3 實現類的屬性和行為
6.5 高手是這樣煉成的
6.5.1 C++類對象的內存模型
6.5.2 指向自身的this指針
第7章 C++世界的奇人異事
7.1 一切指針都是紙老虎:徹底理解指針
7.1.1 指針的運算
7.1.2 靈活的void類型和void類型指針
7.1.3 指向指針的指針
7.1.4 指針在函數中的應用
7.1.5 引用
7.2 程序中的異常處理
7.2.1 異常處理
7.2.2 異常的函數接口聲明
7.2.3 合理使用異常處理
7.3 編寫更復雜的C++程序
7.3.1 源文件和頭文件
7.3.2 名字空間
7.3.3 作用域與可見性
7.3.4 編譯預處理
7.4 高手是這樣煉成的
7.4.1 用宏定義化繁為簡
7.4.2 用typedef定義類型的別名
7.4.3 用const保護數據
第3篇 攀登C++世界的高峰
第8章 用STL優雅你的程序
8.1 跟STL做朋友
8.1.1 算法+容器+迭代器=STL
8.1.2 在程序中使用STL
8.1.3 STL到底好在哪里
8.2 用模板實現通用算法
8.2.1 函數模板
8.2.2 類模板
8.2.3 模板的實例化
8.2.4 用模板實現通用算法
第9章 STL中的容器管理數據
9.1 容器就是STL中的瓶瓶罐罐
9.1.1 操作容器中的數據元素
9.1.2 使用迭代器訪問容器中的數據元素
9.1.3 容器的使用說明書
9.1.4 如何選擇合適的容器
9.2 vector容器是數組的最佳替代者
9.2.1 創建并初始化vector對象
9.2.2 vector容器的操作
9.2.3 訪問vector容器中的數據
9.3 可以保存鍵值對的map容器
9.3.1 創建并初始化map容器
9.3.2 將數據保存到map容器中
9.3.3 根據鍵找到對應的值
第10章 用STL中的通用算法處理數據
10.1 STL算法中的“四大幫派”
10.2 容器元素的查找與遍歷
10.2.1 用for_each()算法遍歷容器中的數據元素
10.2.2 用find()和find_if()算法實現線性查找
10.3 容器元素的復制與變換
10.3.1 復制容器元素:copy()算法
10.3.2 合并容器元素:merge()算法
10.3.3 變換容器元素:transform函數
10.4 容器元素的排序
10.4.1 使用sort()算法對容器中的數據進行排序
10.4.2 對排序的規則進行自定義
10.5 實戰STL算法
10.5.1 “算法”老師帶來的一堂別開生面的體育課
10.5.2 刪除容器中的冗余元素
第11章 函數指針、函數對象與Lambda表達式
11.1 函數指針
11.1.1 函數指針的聲明與賦值
11.1.2 用函數指針調用函數
11.1.3 用函數指針實現回調函數
11.1.4 將函數指針應用到STL算法中
11.2 函數對象
11.2.1 定義一個函數對象
11.2.2 利用函數對象記住狀態數據
11.3 用Lambda表達式編寫更簡單的函數
11.3.1 最簡單直接的函數表達形式:Lambda表達式
11.3.2 Lambda表達式的語法規則
11.3.3 Lambda表達式的復用
第12章 C++世界的幾件新鮮事
12.1 用右值引用榨干C++的性能
12.1.1 什么是右值
12.1.2 右值引用在函數返回值上的應用
12.1.3 STL算法中被浪費的右值
12.1.4 右值引用如何提高性能
12.2 智能指針shared_ptr
12.2.1 C++的內存管理
12.2.2 用聰明的shared_ptr解決內存管理問題
12.2.3 智能指針的應用場景
12.2.4 shared_ptr的使用
12.2.5 shared_ptr與標準庫容器
12.2.6 對shared_ptr進行自定義
12.3 用PPL進行多線程開發
12.3.1 多核給程序設計帶來的挑戰
12.3.2 PPL帶來免費的午餐
12.3.3 PPL中的并行算法
12.3.4 PPL中的并行任務
12.3.5 PPL中的并行對象和并行容器
12.3.6 PPL之外的另一種選擇:Open MP
第13章 找工作就靠它了
13.1 打好基礎
13.1.1 基本概念
13.1.2 函數
13.1.3 面向對象思想
13.1.4 類與對象
13.1.5 STL
13.2 積累經驗
13.3 考查智力
附錄A 接下來該讀什么書
A.1 開山鼻祖:《C++程序設計語言》
A.2 初學者必看:《C++Primer中文版(第4版)》
A.3 百科全書:《代碼大全,第2版》
A.4 內功秘籍:《EffectiveC++(ThirdEdition)》
A.5 經驗很重要:《C++編程規范》
后記
- PC官方版
- 安卓官方手機版
- IOS官方手機版