零基礎學C++

零基礎學C++

《零基礎學C++》是2009年1月機械工業出版社出版的圖書,作者是楊彥強、劉袁紅、王浩。

基本介紹

  • 書名:零基礎學C++
  • 作者:楊彥強、劉袁紅、王浩
  • ISBN:9787111252269
  • 頁數:476頁
  • 定價:69.00
  • 出版社機械工業出版社
  • 出版時間:2009年1月1日
  • 裝幀:平裝
  • 開本:16開
  • 版次:第1版
內容簡介,圖書目錄,

內容簡介

閱讀和學習本書並不要求讀者有C++語言的基礎,通過幾百個簡潔高效的代碼,《零基礎學C++(第2版)》將帶領讀者循序漸進地領略C++語言的魅力所在。本書採用從無到有、由淺入深、逐級遞進的編寫方式,尤其適合無C++語言基礎或C語言基礎薄弱的程式設計師閱讀。本書共分為六篇21章,介紹了Visual C++6開發環境的搭建、C++語言的基本數據類型、C++語言的表達式、函式、函式重載、類的繼承、多態、記憶體管理方式、檔案存儲、錯誤與異常、RTTI、String類、編碼風格與程式編譯等內容,最後還對世界500強中IT公司常見面試題進行了講解。本書非常適合C++語言的初、中級學者閱讀,並可作為開發人員的參考手冊。

圖書目錄

前言
第一篇  C++基礎
第1章  C++概述
1.1  了解計算機
1.1.1  計算機硬體
1.1.2  計算機軟體
1.2  程式設計語言
1.2.1  機器語言
1.2.2  彙編語言
1.2.3  高級語言
1.2.4  數據結構和算法
1.2.5  面向過程的程式設計(POP)
1.2.6  面向對象的程式設計(OOP)
1.3  C++簡介
1.3.1  C++語言發展歷程
1.3.2  C++語言特點
1.3.3  C++程式開發基本過程
1.4  C++開發環境的搭建
1.4.1  Visual C++ 6開發環境簡介
1.4.2  開發步驟
1.5  第一個C++程式
1.6  小結
1.7  上機實踐習題
第2章  開始C++之旅
2.1  C++程式的結構
2.1.1  注釋
2.1.2  編譯預處理與新舊標準
2.1.3  主函式
2.1.4  名稱空間
2.1.5  C++語素
2.2  變數與基本類型
2.2.1  變數
2.2.2  整型
2.2.3  浮點型
2.2.4  基本字元型
2.2.5  寬字元型
2.2.6  布爾型
2.3  常量
2.3.1  整型常量和浮點型常量
2.3.2  字元型常量
2.3.3  字元串常量
2.3.4  符號常量
2.3.5  枚舉常量
2.4  運算符與表達式
2.4.1  算術運算
2.4.2  邏輯運算
2.4.3  短路表達式
2.4.4  關係運算
2.4.5  大有文章: 變數是否為“0”
2.4.6  條件運算
2.4.7  位運算
2.4.8  賦值運算
2.4.9  ++和--
2.4.10  逗號表達式
2.4.11  sizeof運算符與sizeof表達式
2.4.12  運算符的優先權和結合性
2.5  類型轉換
2.5.1  賦值轉換
2.5.2  表達式中的轉換
2.5.3  強制類型轉換
2.5.4  函式調用和傳遞參數時的類型轉換
2.6  流程控制語句
2.6.1  if...else...選擇結構
2.6.2  switch結構
2.6.3  if...else...結構和switch結構的比較
2.6.4  for循環結構
2.6.5  for循環結構嵌套
2.6.6  while循環結構
2.6.7  do...while循環結構
2.6.8  循環語句的效率
2.6.9  流程轉向控制語句之break
2.6.10  流程轉向控制語句之continue
2.6.11  自由轉向語句goto
2.6.12  程式中止函式exit()
2.7  小結
2.8  上機實踐習題
第二篇  C++過程開發
第3章  數組和C風格字元串
3.1  什麼是數組
3.2  一維數組
3.2.1  一維數組的聲明
3.2.2  初始化一維數組
3.2.3  一維數組套用舉例
3.2.4  數組操作注意事項
3.3  C 風格字元串
3.3.1  C 風格字元串的聲明
3.3.2  字元數組的cin和cout
3.3.3  get()函式和getline()函式
3.3.4  cin與get()/getline()函式的搭配問題
3.3.5  訪問C風格字元串中的某個元素
3.3.6  C風格字元串處理函式
3.4  多維數組
3.4.1  聲明一個多維數組
3.4.2  初始化多維數組
3.4.3  多維數組套用舉例
3.4.4  多維數組在記憶體中是如何排列元素的
3.5  小結
3.6  上機實踐習題
第4章  指針和引用
4.1  指針的定義與使用
4.1.1  聲明一個指針變數
4.1.2  初始化指針變數
4.1.3  指向指針的指針
4.1.4  指針賦值
4.2  指針的運算
4.2.1  指針與整數的加減
4.2.2  同類型指針間的比較
4.2.3  同類型指針相減
4.3  動態記憶體分配
4.3.1  使用new動態分配記憶體
4.3.2  使用delete動態釋放及動態申請的記憶體
4.3.3  使用new申請動態數組
4.3.4  不要使用或釋放已經釋放的記憶體塊
4.3.5  使用malloc和free動態申請記憶體
4.3.6  動態記憶體申請並不一定能成功
4.4  指針和const
4.4.1  禁止改寫指針(常量指針或常指針)
4.4.2  禁止改寫間接引用
4.4.3  既禁止改寫指針,又禁止改寫間接引用
4.5  指針與數組
4.5.1  數組名指針
4.5.2  數組元素的指針形式
4.5.3  指向數組的指針
4.5.4  指針數組
4.6  引用
4.6.1  引用的聲明
4.6.2  引用的特點
4.6.3  引用的使用限制
4.6.4  其他要說明的問題
4.7  小結
4.8  上機實踐習題
第5章  結構、共用體和鍊表
5.1  結構
5.1.1  如何定義一個結構
5.1.2  結構變數的聲明和使用
5.1.3  結構變數的初始化
5.1.4  結構變數間是否可以相互賦值
5.1.5  結構體變數的sizeof
5.2  共用體
5.2.1  共用體的定義
5.2.2  共用體和結構的區別
5.2.3  共用體變數的聲明和初始化
5.2.4  共用體使用舉例
5.2.5  共用體的sizeof
5.3  結構數組和共用體數組
5.3.1  結構數組的聲明和初始化
5.3.2  共用體數組的聲明和初始化
5.4  指向結構的指針
5.4.1  聲明一個結構指針
5.4.2  結構指針的初始化
5.4.3  使用指針訪問結構成員
5.5  鍊表
5.5.1  鍊表的結構
5.5.2  創建鍊表
5.5.3  鍊表與數組的區別
5.5.4  鍊表的遍歷和查找
5.5.5  鍊表的插入和刪除
5.6  小結
5.7  上機實踐習題
第6章  用函式合理組織程式
6.1  模組化帶來的好處
6.1.1  函式的調用過程
6.1.2  抽象和封裝
6.1.3  實現一個函式
6.2  函式定義
6.2.1  函式頭
6.2.2  函式體
6.2.3  函式定義補充說明
6.3  函式聲明
6.3.1  為什麼要進行函式聲明
6.3.2  如何聲明一個函式
6.3.3  分割程式檔案
6.4  函式調用
6.4.1  形參和實參
6.4.2  參數類型轉換
6.4.3  值傳遞
6.4.4  指針傳遞
6.4.5  引用傳遞
6.4.6  對3種傳遞的補充
6.4.7  默認參數調用
6.4.8  inline函式
6.5  遞歸
6.6  函式的重載
6.6.1  何時使用函式重載
6.6.2  如何實現函式重載
6.6.3  陷阱:隱式轉換導致重載函式出現二義性
6.7  C++如何使用記憶體
6.7.1  自動存儲(棧存儲)
6.7.2  靜態存儲(編譯器預分配)
6.8  作用域與可見域
6.8.1  作用域
6.8.2  可見域
6.8.3  函式的作用域和可見域
6.9  小結
6.10  上機實踐習題
第7章  關於函式的高級專題
7.1  記憶體使用錯誤剖析
7.1.1  記憶體泄露
7.1.2  野指針
7.1.3  試圖修改常量
7.1.4  用錯sizeof
7.1.5  記憶體越界訪問
7.1.6  變數的初始化
7.2  重申:函式參數傳遞和返回機制
7.2.1  參數傳遞時的“副本”
7.2.2  函式返回時的“副本”
7.3  函式與指針
7.3.1  指向函式的指針
7.3.2  typedef
7.3.3  通過函式指針將函式作為另一個函式的參數
7.3.4  函式指針數組
7.3.5  返回函式指針的函式
7.3.6  帶參主函式
7.4  函式與數組
7.4.1  數組名作為函式參數
7.4.2  通過指針得到多於1個的回傳值
7.5  函式與結構體、共用體及類對象
7.5.1  3種參數調用
7.5.2  3種返回機制
7.6  函式編寫的建議
7.6.1  合理使用const
7.6.2  檢查輸入參數的有效性
7.6.3  函式返回類型的判斷
7.7  小結
7.8  上機實踐習題
第三篇  面向對象的C++
第8章  面向對象技術基礎
8.1  面向對象基本概念
8.1.1  類的概念
8.1.2  類是分層的
8.1.3  類和對象的關係
8.2  C++類的定義
8.2.1  類定義的基本形式
8.2.2  類定義示例
8.2.3  class和struct
8.3  C++類的實現
8.3.1  在類定義時定義成員函式
8.3.2  在類定義的外部定義成員函式
8.4  C++類的使用
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.5.7  顯式調用析構函式
8.6  複製構造函式
8.6.1  複製構造函式調用機制
8.6.2  默認複製構造函式帶來的問題
8.6.3  解決方案-顯式定義複製構造函式
8.6.4  關於構造函式和複製構造函式
8.7  特殊數據成員
8.7.1  const數據成員
8.7.2  引用成員
8.7.3  類對象成員
8.7.4  特別說明
8.7.5  static數據成員
8.8  特殊函式成員
8.8.1  靜態成員函式
8.8.2  const與成員函式
8.9  對象的組織
8.9.1  const對象
8.9.2  指向對象的指針
8.9.3  對象的大小
8.9.4  this指針
8.9.5  對象數組
8.9.6  對象鍊表
8.10  為對象動態分配記憶體
8.10.1  使用new和delete為單個對象分配/釋放動態記憶體
8.10.2  使用new和delete為對象數組分配/釋放動態空間
8.10.3  malloc和free能否為對象動態申請記憶體
8.11  小結
8.12  上機實踐習題
第9章  關於對象的高級專題
9.1  類的作用域
9.2  類定義的作用域與可見域
9.3  對象的生存期、作用域和可見域
9.3.1  先定義,後實例化
9.3.2  對象記憶體的釋放與堆記憶體
9.4  友元
9.4.1  友元的非成員函式
9.4.2  友元的成員函式
9.4.3  友元函式的重載
9.4.4  友元類
9.4.5  友元是否破壞了封裝性
9.5  運算符重載
9.5.1  運算符重載規則
9.5.2  以成員函式形式重載運算符
9.5.3  以友元函式形式重載運算符
9.5.4  友元函式形式和成員函式形式的比較
9.5.5  對運算符重載的補充說明
9.6  運算符重載範例
9.6.1  賦值運算符
9.6.2  函式調用運算符
9.6.3  下標運算符
9.7  類型轉換
9.7.1  由其他類型向定義類的轉換
9.7.2  由自定義類向其他類型的轉換
9.7.3  隱式轉換帶來的二義性
9.8  重載函式選擇規則
9.8.1  重載解析
9.8.2  什麼是完全匹配
9.9  小結
9.10  上機實踐習題
第10章  繼承
10.1  什麼是繼承
10.1.1  簡單示例
10.1.2  繼承的層次性
10.2  派生類
10.2.1  public派生與private派生
10.2.2  protected成員與protected派生
10.3  多基派生
10.3.1  多基派生的聲明和定義
10.3.2  二義性問題
10.3.3  解決方案
10.4  虛基類
10.4.1  共同基類帶來的二義性
10.4.2  解決方案
10.4.3  虛基派生二義性與多基派生二義性不同
10.5  派生類的構造函式和析構函式
10.5.1  派生類的構造函式
10.5.2  派生類的析構函式
10.5.3  多基派生類的構造函式和析構函式
10.5.4  虛基派生類的構造函式和析構函式
10.6  分清繼承還是組合
10.6.1  繼承不是萬金油
10.6.2  組合
10.7  基類與派生類對象間的相互轉換
10.7.1  類型適應
10.7.2  多基繼承時的情況
10.7.3  公共基類
10.7.4  虛基類的情況
10.8  小結
10.9  上機實踐習題
第11章  多態
11.1  多態與虛函式
11.1.1  靜態聯編
11.1.2  動態聯編
11.1.3  為什麼需要虛函式
11.1.4  虛函式的聲明和定義
11.2  虛函式的訪問
11.2.1  對象名訪問
11.2.2  指針訪問
11.2.3  引用訪問
11.2.4  類內訪問
11.2.5  在構造函式或析構函式中進行訪問
11.3  純虛函式與抽象類
11.3.1  純虛函式的聲明和定義
11.3.2  抽象類
11.3.3  另一種抽象類:類中只定義了protected型的構造函式
11.3.4  延伸:構造函式能否為private型
11.3.5  虛析構函式
11.4  虛函式引入的二義性
11.4.1  多基派生
11.4.2  共同基類和虛繼承
11.5  重載、覆蓋與隱藏
11.5.1  重載
11.5.2  覆蓋
11.5.3  隱藏
11.6  小結
11.7  上機實踐習題
第四篇  泛 型 編 程
第12章  模板
12.1  為什麼要定義模板
12.1.1  類型參數化
12.1.2  模板的定義
12.2  函式模板
12.2.1  函式模板的使用
12.2.2  隱式實例化
12.2.3  顯式實例化
12.2.4  特化
12.2.5  重載
12.2.6  優先權與執行順序
12.3  類模板
12.3.1  定義類模板
12.3.2  隱式實例化
12.3.3  顯式實例化
12.3.4  顯式特化
12.3.5  部分特化
12.3.6  重載和優先權
12.4  模板的嵌套
12.4.1  函式成員模板
12.4.2  對象成員模板
12.5  模板參數
12.6  小結
12.7  上機實踐習題
第13章  標準模板庫
13.1  理解STL
13.1.1  容器
13.1.2  適配器
13.1.3  疊代器
13.1.4  算法
13.2  使用序列式容器
13.2.1  序列式容器的創建和元素的訪問
13.2.2  所有容器都支持的特徵
13.2.3  序列式容器中元素的插入和刪除
13.2.4  vector容器
13.2.5  deque容器
13.2.6  list容器
13.3  使用關聯式容器
13.3.1  set容器
13.3.2  multiset容器
13.3.3  map容器
13.3.4  multimap容器
13.4  關聯式容器支持的成員函式操作
13.4.1  元素的插入
13.4.2  元素的刪除
13.4.3  元素的查找與訪問
13.5  疊代器
13.5.1  理解疊代器本質
13.5.2  疊代器類型
13.5.3  為什麼要定義這么多疊代器
13.5.4  容器中定義的疊代器類型與5種類型的對應
13.5.5  流疊代器
13.5.6  疊代器失效
13.6  泛型算法
13.6.1  什麼是函式對象
13.6.2  算法分類
13.7  適配器
13.7.1  容器適配器
13.7.2  疊代器適配器
13.7.3  函式適配器
13.8  小結
13.9  上機實踐習題
第五篇  輸入輸出處理和編程規範
第14章  輸入輸出和檔案
14.1  輸入輸出概述
14.1.1  什麼是檔案
14.1.2  流
14.1.3  緩衝區
14.1.4  重定向
14.1.5  3種輸入輸出機制
14.2  高層I/O
14.2.1  標準輸出函式printf
14.2.2  標準輸入函式scanf
14.2.3  掃描集
14.2.4  sprintf函式和sscanf函式
14.2.5  fprintf函式和fscanf函式
14.2.6  檔案訪問機制
14.3  流類庫
14.3.1  流類庫更安全、更高效
14.3.2  流類庫層次
14.4  輸出流
14.4.1  操作符<<
14.4.2  其他ostream方法
14.4.3  格式狀態字
14.4.4  格式控制值的默認值
14.4.5  flag函式讀取和設定格式狀態字
14.4.6  使用setf函式和unsetf函式設定格式關鍵字
14.4.7  設定域寬
14.4.8  填充字元
14.4.9  浮點數輸出和顯示精度
14.4.10  控制符
14.5  輸入流
14.5.1  >>操作符
14.5.2  輸入流與格式狀態字
14.5.3  輸入流與域寬
14.5.4  使用get函式讀取單個字元
14.5.5  使用get函式和getline函式讀取C風格字元串
14.5.6  其他istream方法
14.6  流狀態
14.6.1  什麼是流狀態
14.6.2  讀取流狀態
14.6.3  管理流狀態
14.7  重載>>和<<
14.7.1  插入符的重載
14.7.2  抽取符的重載
14.8  檔案操作
14.8.1  檔案操作基本過程
14.8.2  檔案的打開
14.8.3  取消檔案和流的關聯
14.8.4  檔案的讀寫
14.8.5  文本檔案的讀寫
14.8.6  二進制檔案的讀寫
14.8.7  檔案定位指針和隨機讀取
14.9  字元串流
14.9.1  strstream類族
14.9.2  sstream類族
14.10  小結
14.11  上機實踐習題
第15章  名稱空間
15.1  什麼是名稱空間
15.1.1  名稱空間範例
15.1.2  定義名稱空間
15.2  實體的作用域與可見域
15.2.1  實體可見域
15.2.2  可見域的擴展
15.2.3  using聲明機制
15.2.4  using聲明帶來的多重聲明問題(二義性)
15.2.5  空間內的禁止
15.2.6  先聲明,後使用
15.3  名稱空間的作用域與可見性
15.3.1  名稱空間的定義策略
15.3.2  推薦用法
15.3.3  名稱空間嵌套
15.3.4  using編譯指令
15.3.5  未命名的名稱空間
15.4  對名稱空間的思考
15.5  小結
15.6  上機實踐習題
第16章  異常和錯誤
16.1  編碼時的防錯
16.1.1  調用abort函式或exit函式
16.1.2  返回錯誤標誌
16.2  異常機制
16.2.1  關鍵字throw
16.2.2  異常處理程式
16.2.3  自定義異常對象
16.2.4  有繼承關係的類異常
16.2.5  terminate函式和set_terminate函式
16.2.6  unexpected函式與set_unexpected函式
16.2.7  標準異常
16.2.8  對unexpected函式的補充
16.3  異常發生時的記憶體管理
16.3.1  堆疊解退
16.3.2  異常處理機制與函式的不同
16.3.3  構造函式中拋出異常
16.3.4  記憶體泄露
16.3.5  析構函式中可否拋出異常
16.4  auto_ptr類
16.4.1  使用auto_ptr類模板
16.4.2  關於auto_ptr的若干問題
16.5  小結
16.6  上機實踐習題
第17章  RTTI和類型轉換操作符
17.1  RTTI機制
17.1.1  dynamic_cast操作符
17.1.2  typeinfo類和typeid操作符
17.1.3  補充說明
17.2  類型轉換操作符
17.2.1  const_cast操作符
17.2.2  static_cast操作符
17.2.3  reinterpret_cast操作符
17.3  小結
17.4  上機實踐習題
第18章  string字元串類
18.1  為什麼要使用string類
18.2  聲明一個字元串
18.3  字元串的輸入輸出
18.4  string類功能
18.4.1  string字元串和C風格字元串的轉換
18.4.2  賦值和清空
18.4.3  元素刪除
18.4.4  元素追加與相加
18.4.5  元素插入
18.4.6  大小和容量
18.4.7  元素存取
18.4.8  字元串比較
18.4.9  提取子串
18.4.10  搜尋與查找
18.5  小結
18.6  上機實踐習題
第19章  編碼風格
19.1  程式的排版
19.1.1  注釋
19.1.2  空行的用法
19.1.3  代碼行
19.1.4  空格
19.1.5  縮進與對齊
19.1.6  &和*的位置
19.2  命名規則
19.2.1  Windows風格和Unix風格
19.2.2  如何對程式實體命名
19.3  項目檔案的組織
19.3.1  模組劃分
19.3.2  頭檔案
19.3.3  定義檔案
19.3.4  目錄結構
19.4  小結
19.5  上機實踐習題
第20章  程式編譯
20.1  程式的編譯流程
20.2  預處理
20.2.1  頭檔案包含
20.2.2  宏
20.2.3  條件編譯
20.2.4  #ifdef、 #ifndef與重複包含
20.2.5  使用const代替#define定義常量
20.2.6  inline與#define的比較
20.3  VC6調試入門
20.3.1  斷點的設定與去除
20.3.2  條件斷點
20.3.3  數據斷點
20.3.4  訊息斷點
20.3.5  觀察視圖(Watch)
20.3.6  記憶體視圖(Memory)
20.3.7  變數視圖(Variables)
20.3.8  暫存器視圖(Registers)
20.3.9  調用堆疊視圖(Call Stack)
20.3.10  反彙編視圖(Disassembly)
20.3.11  進程控制
20.4  其他調試手段
20.4.1  Debug模式和Release模式
20.4.2  assert宏
20.4.3  輸出字元串
20.5  小結
20.6  上機實踐習題
第六篇  面試題精選
第21章  常見面試題
21.1  常見基本知識問答題
面試題1:簡述面向對象的3個基本特徵
面試題2:局部變數能否和全局變數重名
面試題3:類成員函式的重載、覆蓋和隱藏的區別是什麼
面試題4:用變數a給出下面的定義
面試題5:在C++中,下面的結構是合法的嗎?如果是,其作用是什麼
面試題6:在非C++中建類 A 和 B,在哪幾種情況下B能隱式轉化為A
面試題7:C++中的空類,默認產生哪些類成員函式
面試題8:C++有哪些性質(面向對象特點)
面試題9:子類析構時要調用父類的析構函式嗎
面試題10:什麼是引用?聲明和使用“引用”要注意哪些問題
面試題11:將引用作為函式返回值類型的格式及優點有哪些
面試題12:引用與指針的區別是什麼
面試題13:重載和重寫(覆蓋)的區別
面試題14:多態的作用是什麼
面試題15:請指出const與#define相比有何優點
面試題16:C語言中static關鍵字的具體作用有哪些
面試題17:如何判斷程式是由C 編譯程式還是由C++編譯程式編譯的
面試題18:關鍵字const的含義是什麼
21.2  世界500強公司的智力問答題
面試題19:工人分金條
面試題20:分蛋糕
面試題21:過橋問題
面試題22:黑白帽子
面試題23:電梯與鑽石
面試題24:手電筒傳遞
面試題25:燒繩問題
面試題26:圓的下水道蓋子
面試題27:選建築師
面試題28:天平分鹽
面試題29:分不開的錢
面試題30:小鳥追火車
面試題31:給紅色最大的機會
面試題32:鏡子中的影像
面試題33:污染的藥丸
面試題34:稱出不是標準重量的水
面試題35:多彩的果凍
面試題36:電子遊戲機
面試題37:監獄裡的囚犯
面試題38:燈的狀態
面試題39:時針和分針
面試題40:3個奇數
面試題41:屋內的燈
面試題42:找出最重的球
面試題43:盲人分襪子
面試題44:燒香計時
面試題45:平分蜂蜜
面試題46:猜經理女兒的年齡
面試題47:兩個圓環
面試題48:喝啤酒
面試題49:算24點
面試題50:聰明人
面試題51:海盜分金幣
面試題52:到底是什麼牌
面試題53:聰明的老闆娘
面試題54:找出不同重量的球
21.3  分析題
面試題55:分析下面的程式段,顯示最後的結果
面試題56:分析程式最後的輸出結果
面試題57:分析最後輸出的結果
面試題58:求下面函式的返回值
面試題59:分析最後輸出的結果
面試題60:分析最後輸出的結果
21.4  編程題
面試題61:結果輸出到檔案
面試題62:String類的具體實現
面試題63:鍊表題,一個鍊表的節點結構
面試題64:寫一個函式並找出在一個整數數組中第二大的數
面試題65:字元串的逆序輸出
面試題66:判斷作業系統的位數
面試題67:實現對數組的降序排序
面試題68:斐波那契數列1、1、2、3、5等,編寫程式求第10項

相關詞條

熱門詞條

聯絡我們