內容簡介目錄 本書內容詳盡,示例豐富,通過400多個簡短易懂的示例深入介紹了C++程序設計方法。全書共分18章,前5章講解了C++編程和C語言過程化編程之間的區(qū)別,內容包括從C到C++的遷移、命名空間、輸入輸出基礎、引用變量和動態(tài)內存分配;后面各章介紹了一些常用類及其用、構造函數(shù)和析構函數(shù)、異常處理、函數(shù)重載、繼承、模板、輸入/輸出流、操叢符、string類及標準模板庫等內容;本書最后的附錄A列出了相關的參考書目,附錄B則提供了使用C++的一些準則。本書結構特色實用性和可操作性強。提供了大量的編程示例,幫助學生透徹理解所學的概念。通過大量的練習題進一步鞏固所學的內容,確保學生能夠真正掌握各章節(jié)的內容??坪喍堂髁说?小結"部分總結了各章節(jié)的主題內容,使學生對所學的內容一個整體的認識。"注意"部分重點說明了與章節(jié)中所介紹概念相關的重要內容。 第1章 由C遷移到C++1.1 概述1.2 C與C++的比較1.3編譯器如何識別C++程序1.4預處理器如何識別環(huán)境1.5新的注釋風格1.6永遠不要假定(隱式地使用int類型)1.7 main()的默認返回值1.8聲明與定義的區(qū)別1.9函數(shù)聲明中的形參名稱1.1 O 函數(shù)定義中的形參名稱1.1l 所有的函數(shù)在調用前必須先聲明l-1 2空圓括號的含義1.13函數(shù)參數(shù)的默認值1.14初始化與賦值的區(qū)別1.15放置變量聲明的地方1.16 for循環(huán)內的變量聲明1.17標記名成為類型名1.18 C++與C中枚舉類型的區(qū)別1.1 9初始化全局變量1.20數(shù)組初始化1.2 1 布爾類型1.22 void木指針1.23 使用O,而不是宏NULL1.24 關鍵字const1.24.1 所有的常量必須初始化1.24.2將常量值的參數(shù)傳遞給函數(shù)的含義1.24.3 函數(shù)返回值為常量的含義1.24.4 const如何影響指針1.24.5 C++與C中字符數(shù)組的區(qū)別1.24.6如何支持char const*類型的數(shù)組1.24.7 C以及C++處理const方式的區(qū)別1.24.8使用const而不是#define1.24 變量的連接1.25新的類型強制轉換風格1.25.1 類型強制轉換以及轉換的區(qū)別1.25.2類型強制轉換的一般格式1.25.3 static cast1.25.4 reinterpret cast1.25.5 const-cast1.25.6您不會犯錯1.26 C以及C++關鍵字第2章命名空間2.1 概述2.2存在的問題2.3 如何創(chuàng)建命名空間2.4作用域分解運算符2.5 如何訪問命名空問的成員2.5.1 直接訪問命名空間的成員2.5.2 using聲明:訪問命名空間成員的另一種方法2.5.3 using指令:訪問命名空間成員的另一種方法2.6 小心避免不明確的情況2.7無名的命名空間2.8命名空間的別名2.9 Koenig查找規(guī)則第3章輸入/輸出基礎3.1 概述3.2使用新函數(shù)的理由3.3頭文件:命名約定3.4 iostream頭文件3.5 cout對象3.5.1插入運算符3.5.2顯式地限定cout對象3.5.3使用using聲明來訪問cout對象3.5.4使用using指令來訪問cout對象3.6關于正確使用std命名空間的建議3.7 了解運算符的優(yōu)先級3.8輸出格式3.9 cin對象3.1O檢查文件是否結束第4章引用變量4.1 概述4.2存在的問題4.3如何創(chuàng)建引用變量4.4所有的引用都必須初始化4.5 引用的作用4.6使用const限定引用4.7何時不需要使用引用4.8沒有"常量引用"4.9創(chuàng)建對指針的引用4.10創(chuàng)建對數(shù)組的引用4.11 由函數(shù)返回引用第5章動態(tài)內存分配5.1 概述5.2如何為單個對象分配動態(tài)內存5.3如何初始化基本類型5.4空圓括號的含義5.5如何釋放單個對象的空閑空間5.6如何為對象的數(shù)組分配空閑空間5.7如何釋放對象數(shù)組的空閑空間5.8保持平衡5.9如何使用new和delete在空閑存儲區(qū)中存儲字符串5.10如何分配和刪除多維數(shù)組5.11 命名該空間5.12兩個程序輸出示例第6章類6.1 概述6.2 C中的結構6.2.1 全局函數(shù)6.2.2 C存在的問題6.3初識封裝6.3.1修訂后的Circle抽象6.3.2必須支持常量對象6.4結構與類6.5類的用途6.6類的組件6.7如何編寫類定義6.7.1 類聲明與類定義6.7.2關于輸入/輸出類6.8數(shù)據(jù)隱藏的原則6.9訪問限定符6.9.1 private關鍵字6.9.2 public關鍵字6.9.3 protected關鍵字6.9.4選擇編碼風格6.10模塊化并實現(xiàn)隱藏6.10.1如何模塊化6.10.2用戶的任務6.10.3本節(jié)小結6.1 1 如何通過實例來訪問類成員6.12 內聯(lián)函數(shù)6.12.1 內聯(lián)函數(shù)的含義6.12.2 內聯(lián)函數(shù)與宏的對比6.12.3 使得內聯(lián)函數(shù)對編譯器有效6.12.4放置內聯(lián)函數(shù)的地方6.12.5 內聯(lián)函數(shù)的連接6.12.6如何編寫全局成員內聯(lián)函數(shù)6.12.7 如何編寫類成員內聯(lián)函數(shù)6.12.8隱式內聯(lián)和顯式內聯(lián)的比較6.13 mutable關鍵字6.14如何顯示類的內容6.15類中的枚舉類型6.15.1使用枚舉的原因6.1 5.2私有枚舉6.1 5.3 公有枚舉6.15.4 "Enum Hack"的作用第7章構造函數(shù)和析構函數(shù)7.1 概述7.2構造函數(shù)的定義7.2.1語法規(guī)則7.2.2何時不調用構造函數(shù)7.2.3編譯器提供的默認構造函數(shù)7.2.4默認的構造函數(shù):普遍定義7.2.5初始化常量對象7.2.6構造函數(shù)重載7.2.7不能直接調用構造函數(shù)7.3析構函數(shù)的定義7.3.1編譯器提供的析構函數(shù)7.3.2析構函數(shù)的作用7.3.3編寫您自己的析構函數(shù)7.3.4語法規(guī)則7.4如何實例化類并調用默認構造函數(shù)7.5如何實例化類并向構造函數(shù)傳遞參數(shù)7.6如何阻止使用默認構造函數(shù)的實例化7.7隱式類型轉換7.8復制構造函數(shù)7.8.1默認復制構造函數(shù)7.8.2復制構造函數(shù)的語法7.8.3復制構造函數(shù)的數(shù)量7.8.4淺復制與深復制7.8.5編寫您自己的復制構造函數(shù)7.8.6如何阻止對象復制7.9函數(shù)風格的強制轉換7.10初始化與賦值7.11基/成員初始化列表7.11.1默認初始化7.11.2強制使用基/成員初始化列表7.11.3 另一種初始化調用的情況7.12關于指針7.13 形參名與類成員名7.14非靜態(tài)數(shù)據(jù)成員的初始化順序7.15 基本類型的數(shù)組作為非靜態(tài)數(shù)據(jù)成員7.16用戶自定義類型數(shù)組作為非靜態(tài)數(shù)據(jù)成員7.17如何創(chuàng)建用戶自定義實例的數(shù)組7.18如何聲明常量數(shù)據(jù)成員數(shù)組7.19如何在空閑存儲區(qū)中創(chuàng)建用戶自定義類型7.20如何在空閑存儲區(qū)中創(chuàng)建用戶自定義類型的數(shù)組7.2l調用new時的語法第8章類的其他特征8.1 概述8.2 this指針8.2.1 解引用this指針來復制調用對象8.2.2解引用this指針以允許鏈接函數(shù)8.3靜態(tài)類數(shù)據(jù)成員8.3.1 在類的定義中初始化靜態(tài)類數(shù)據(jù)成員8.3.2靜態(tài)成員函數(shù)8.3.3用于生成隨機數(shù)的類8.3.4 Die類8.3.5 Dice類8.4類的大小8.5友元函數(shù)8.5.1 類如何授權一個函數(shù)作為它的友元函數(shù)8.5.2成員函數(shù)和非成員函數(shù)8.5.3 使用非成員非友元函數(shù)替代友元函數(shù)8.5.4在命名空間中聲明類的友元函數(shù)8.6友元類8.7 類的封裝8.8運算符轉換函數(shù)8.8.1 用途8.8.2語法8.9類成員指針8.9.1全局函數(shù)指針8.9.2指向非靜態(tài)類成員函數(shù)的指針8.9.3 使用指向非靜態(tài)成員函數(shù)的指針調用函數(shù)8.9.4指向靜態(tài)類成員函數(shù)的指針第9章異常處理9.1 概述9.2如何拋出異常9.3如何捕獲異常9.4 catch代碼塊的匹配處理9.5異常處理的一個簡單示例9.6釋放堆棧9.7如果調用new失敗怎么辦9.8如何防止new拋出異常9.9異常的傳播9.10如何處理指向空閑空間的指針9.11 不能銷毀還沒有創(chuàng)建的對象9.12重新拋出對象9.13 從子對象成員中捕獲拋出的異常9.14function-try-blocks9.15子對象成員和指針的混合使用9.16對象的局部結構9.17編寫異常.安全代碼9.17.1 堆棧中的簡單對象9.17.2堆棧中的對象數(shù)組9.17.3 空閑存儲區(qū)中的簡單對象9.17.4再論空閑存儲區(qū)中的簡單對象9.17.5 空閑存儲區(qū)中的對象數(shù)組9.17.6再論空閑存儲區(qū)中的對象數(shù)組9.18析構函數(shù)和異常處理9.19異常規(guī)范9.20 出錯條件9.20.1 意外錯誤9.20.2終止錯誤9.21 編譯器如何對待異常規(guī)范9.22為類定義operator new()函數(shù)第10章函數(shù)重載10.1 概述lO.2幾個關于函數(shù)重載的示例10.3忽略返回類型10.4 const限定參數(shù)按值傳遞l0.5 const限定參數(shù)按指針傳遞10.6 const限定參數(shù)按引用傳遞10.7可變成員函數(shù)和常量成員函數(shù)10.8 重載決議10.9根據(jù)指針類型重載10.10名稱重整10.10.1如何避免名稱重整10.10.2類型.安全連接10.11運算符函數(shù)重載10.11.1運算符優(yōu)先級表10.11.2重載運算符的命名10.11.3默認參數(shù)。10.11.4 C++自帶的運算符10.11.5不能改變優(yōu)先級10.11.6不能改變"Narity"10.11.7不能改變結合性10.11.8成員函數(shù)與非成員函數(shù)10.11.9至少支持一個類實例10.11.10中綴表示法和函數(shù)表示法10.11.1l 二元成員函數(shù)和隱式類型轉換10.11.12多次重載或者允許隱式類型轉換10.11.13運算符的重載10.11.14賦值運算符10.11.15函數(shù)調用運算符10.11.16下標運算符10.11.17間接成員運算符10.11.18復合賦值運算符10.11.19自增運算符和自減運算符10.11.20重載逗號運算符10.11.21重載邏輯與和邏輯或運算符10.11.22重載插入運算符10.11.23運算符小結第11章繼承11.1 概述11.2 內存中的派生類實例1l.3 使用繼承創(chuàng)建is-a關系11.4如何定義派生類11.5再論結構和類11.6 關鍵字protected11.7訪問特權11.8基類"存取器"函數(shù)11.9修改繼承訪問11.10 函數(shù)隱藏11.11 派生類成員函數(shù)如何調用基類成員函數(shù)11.12管理函數(shù)11.12.1如何編寫管理函數(shù)11.12.2派生類到基類的標準轉換11.12.3 隱藏非成員函數(shù)11.12.4不要對數(shù)組進行向上類型轉換11.1 3 多態(tài)性11.14多態(tài)性和虛函數(shù)11.14.1 友好的程序代碼和不友好的程序代碼11.14.2重寫虛函數(shù)11.14.3虛析構函數(shù)11.14.4從基類的構造函數(shù)中調用虛函數(shù)11.1 5抽象基類11.15.1 再論關于貸款的示例11.15.2關于虛函數(shù)的異常規(guī)范11.16里氏代換原則11.17多重繼承11.17.1 虛基類11.17.2初始化虛基類第12章模板12.1 概述12.2 函數(shù)模板12.2.1 不使用宏的原因12.2.2如何編寫函數(shù)模板12.2.3優(yōu)化代碼12.2.4在何處使用函數(shù)模板12.2.5針對不同的參數(shù)類型進行實例化12.2.6顯式地指定類型12.2.7默認的函數(shù)參數(shù)12.2.8完全特殊化函數(shù)模板12.2.9如何調用特殊化的函數(shù)12.2.10對特殊化和重載的選擇12.2.11特殊化greater()函數(shù)模板12.3類模板12.3.1如何定義類模板12.3.2在類定義之外定義成員12.3.3實例化類模板12.3.4另一個模板的模板實例化12.3.5默認模板參數(shù)12.3.6在類模板中聲明另一個友元類12.3.7在類模板中聲明友元函數(shù)12.3.8特殊化類模板12.3.9在類模板中嵌入類模板12.3.10從類模板中派生新類12.4非類型模板參數(shù)12.4.1 默認的模板參數(shù)和特殊化12.4.2關于使用非類型模板參數(shù)的有趣示例12.5 成員模板12.6模板模式12.7關鍵字typename第13章運行時類型信息l3.1 概述13.2動態(tài)轉型態(tài)13.3動態(tài)轉型態(tài)是如何工作的13.4關鍵字typeid第14章輸出流14.1 概述14.2實例std::cerr和std::clog14.3如何格式化輸出14.3.1位格式標志14.3.2如何打開位格式標志14.3.3 如何以合適的基數(shù)顯示整數(shù)14.3.4如何顯示整數(shù)的基數(shù)設置14.3.5如何顯示整數(shù)的符號14.3.6如何將輸出顯示為大寫字母14.3.7如何顯示字符14.3.8如何設置輸出字段寬度14.3.9如何指定填充字符14.3.10如何指定字段對齊14.3.1 1 如何格式化浮點型數(shù)值14.4如何顯示bool類型14.5如何顯示地址14.6如何輸出到內存緩沖區(qū)14.6.1 成員函數(shù)ostream::flush()14.6.2預定義的stdio和iostream流的混合使用第15章輸入流l5.1 概述15.2如何檢查錯誤15.2.1錯誤報告標志15.2.2訪問成員函數(shù)15.2.3直接測試iostream對象15.2.4成員函數(shù)std::basic ios::clear()15.2.5如何清空輸入流的緩沖區(qū)l5.3 字符輸入15.3.1使用提取運算符實現(xiàn)對字符串的輸入15.3.2限制輸入字符的個數(shù)15.3.3使用std::istream::getline()實現(xiàn)字符串輸入第16章操縱符16.1 概述16.2操縱符的格式16.3一些簡單的操縱符l6.4 不帶參數(shù)調用的內置操縱符16.5使用帶有一個參數(shù)的操縱符16.6使用帶有一個參數(shù)的內置操縱符第17章文件輸入/輸出17.1 概述17.2文件輸入/輸出類17.3文件輸出17.3.1文件名參數(shù)17.3.2文件模式參數(shù)17.3.3驗證文件是否打開17.3.4關閉打開的文件17.3.5輸出磁盤文件示例1 7.4 文件輸入1 7.5文件位置標記l 7.6 文件更新1 7.7 二進制模式17.8未格式化的輸出17.9未格式化的輸入17.10重定向I/O第1 8章string類與標準模板庫18.1概述18.2 string類l8.3標準模板庫18.3.1 std::vector類18.3.2迭代器18.3.3迭代器的類型18.3.4基于string的I/O18.3.5標準模板庫中的算法18.3.6標準模板庫的主要容器18.3.7比較對象附錄A參考書目附錄B C++準則