范磊老師的從新手到高手C++全方位學習 教學+程式碼 (內含PDF電子書) 中文版(DVD一片裝) 軟體簡介: 《從新手到高手C++全方位學習》總結了十幾本C++圖書及教材的優點,擯棄了它們語 言拖遝、層次結構混亂等缺陷,從零開始、由淺入深、層層遞進、細緻而又詳盡地講 解C++這門大型編程語言。《從新手到高手C++全方位學習》知識系統全面,擁有字典 般的容量,可隨用隨查,涵蓋指標、面向物件、操作符重載、流、命名空問、範本、 異常處理、巨集等主流C++開發技術。為了使讀者能夠活學活用,《從新手到高手C++ 全方位學習》針對重要的概念精心設計了438個實用範例,囊括大量經驗和技巧,即使 已從事C++工作多年的朋友,也能從中汲取新的養料。《從新手到高手C++全方位學習》 適合於從未學習過任何編程語言的新手,以及學習C++多年,仍舊不能融會貫通的讀者 ,對於正在使用C++進行開發的程式師也有很好的參考價值。 目錄 第1章初識C++ 1.1C++簡介 1.2C++與C的區別 1.3學習C++之前需要先學C嗎 1.4C++與其他語言的區別 1.5C++的版本以及安裝問題 第2章做一個最簡短的C++程式 2.1簡單的螢幕輸出小程式 2.2輸出語句的使用 2.3std::介紹 2.4iostream與iostream.h的區別 2.5重名問題 2.6注釋 第3章初步瞭解函數 3.1一個簡單的函數 3.2函數的傳參 3.3函數的返回值.參數與變數 3.4函數的聲明與定義 3.5局部變數 3.6總體變數 第4章C++資料類型 4.1變數的定義 4.2將變數及資料存儲在記憶體中 4.3布林型變數 4.4字元型變數 4.5wchar_t雙位元組型變數 4.6整型概述 4.7整型變數的定義 4.8浮點型變數 4.9常量 4.10枚舉型常量 第5章if語句與邏輯運算符 5.1語句的定義 5.2塊的定義 5.3運算式的定義 5.4運算符的定義 5.4.1賦值運算符的定義 5.4.2數學運算符的定義 5.4.3賦值運算符與數學運算符的聯合 5.5自加與自減 5.5.1前置 5.5.2後置 5.6運算式的優先順序 5.7關係運算符 5.8if語句 5.8.1else語句 5.8.2elseif語句 5.8.3if語句的嵌套 5.9邏輯運算符及其使用 5.9.1邏輯“與” 5.9.2邏輯“或” 5.9.3邏輯“非” 5.9.4邏輯運算符的優先順序 5.9.5運算式的真假關係 5.10三目運算符 5.10.1三目運算符的優先問題 5.10.2三目運算符的使用問題 5.10.3三目運算符的型別問題 5.10.4三目運算符在字元型變數中的使用 5.11複雜嵌套的if語句 第6章面向物件 6.1面向物件程式語言的主要特徵 6.2類.對象和成員 6.3類.物件和成員的使用方法及區別 6.3.1聲明一個類 6.3.2命名習慣 6.3.3定義一個物件 6.3.4類與對象的區別 6.3.5物件與成員的關係 6.3.6不要給類賦值 6.3.7物件只能調用類中存在的成員 6.4公有 6.5私有 6.6成員函數的聲明和定義 6.7為什麼將成員函數的聲明和定義分開 6.7.1普通內聯函數 6.7.2成員內聯函數 6.8將類聲明和定義部分保存在頭檔中 6.9const成員函數 6.10構造函數 6.11默認構造函數 6.12析構函數 6.13析構物件陣列 第7章迴圈語句 7.1迴圈語句的前身——goto語句 7.2慎用goto語句 7.3while語句 7.3.1帶運算符的while語句 7.3.2以字元為條件的while語句 7.3.3限定while迴圈的次數 7.3.4continue語句 7.3.5break語句 7.3.6永不休止的while迴圈 7.4do…while迴圈 7.5for迴圈 7.5.1靈活的for迴圈 7.5.2條件為空的for迴圈 7.5.3執行為空的for迴圈 7.5.4嵌套的for迴圈 7.6switch語句 7.6.1switch語句常見錯誤 7.6.2switch的功能表功能 7.7總結 第8章指針 8.1什麼是地址 8.2用指針來保存位址 8.2.1空指針 8.2.2指標與變數類型 8.2.3用指針來訪問值 8.2.4指針地址.指針保存的位址和該位址的值 8.2.5指針對數值的操作 8.2.6更換指針保存的位址 8.3為什麼使用指針 8.3.1棧和堆 8.3.2用指針創建堆中空間 8.3.3用指針刪除堆中空間 8.4動態記憶體 8.4.1記憶體洩漏 8.4.2在堆中創建對象 8.4.3在堆中刪除對象 8.4.4訪問堆中的資料成員 8.4.5在構造函數中開闢記憶體空間 8.4.6物件在棧與堆中的不同 8.5this指針 8.6指標的常見錯誤 8.7指針運算 8.7.1指針的加減運算 8.7.2指針的賦值運算 8.7.3指針的相減運算 8.7.4指針的比較運算 8.8指針 8.8.1常量指針 8.8.2指向常量的指標 8.8.3指向常量的常指標 8.9總結 第9章引用 9.1什麼是引用 9.1.1引用的地址 9.1.2引用就是別名常量 9.1.3引用對象 9.1.4空引用 9.2函數的參數傳遞 9.2.1通過值來傳遞函數參數 9.2.2通過指標來傳遞函數參數 9.2.3通過引用來傳遞函數參數 9.2.4讓函數返回多個值 9.3傳遞物件 9.3.1用值來傳遞物件 9.3.2使用指標來傳遞物件 9.3.3使用const指標來傳遞物件 9.3.4使用引用來傳遞物件 9.3.5到底是使用引用還是指針 9.3.6引用和指標可以一塊用 9.4引用應注意的問題 9.4.1引用容易犯的錯誤 9.4.2引用一個按值返回的堆中物件 9.4.3引用一個按別名返回的堆中物件 9.4.4在哪里創建,就在哪里釋放 9.5總結 第10章深入函數 10.1函數重載 10.1.1普通函數的重載 10.1.2成員函數的重載 10.2函數的默認參數 10.3重載構造函數 10.3.1成員變數的初始化 10.3.2成員變數的初始化與構造函數 10.3.3複製構造函數 10.3.4構造函數和new運算符 10.3.5再談默認構造函數 10.4析構函數和delete運算符 10.4.1默認析構函數 10.4.2調用構造函數進行類型轉換 10.5淺層複製構造函數 10.6深層複製構造函數 第11章運算符重載 11.1運算符重載 11.2在成員函數中實現自加 11.3重載前置自加運算符 11.4創建臨時對象 11.5創建無名臨時對象 11.6取消創建臨時對象 11.7重載後置自加運算符 11.8重載加法運算函數operator+ 11.9重載賦值運算函數operator= 11.10轉換類型運算符 11.10.1溫習調用構造函數實現的類型轉換 11.10.2通過構造函數將變數轉換為一個物件的成員變數 11.10.3通過operator關鍵字進行轉換 11.11什麼可以被重載,什麼不可以 第12章繼承 12.1什麼是繼承和派生 12.1.1複雜的繼承和派生 12.1.2繼承和派生如何在C++中實現 12.1.3繼承的種類及語法 12.1.4單一繼承 12.2公有型.保護型和私有型 12.3訪問許可權 12.4多重繼承 12.5繼承的構造與析構 12.6向基類構造函數傳遞參數 12.7繼承和重載的兩義性問題 12.7.1多重繼承容易產生兩義性 12.7.2兩義性在重載時的一些問題 12.7.3兩義性的歸屬問題 12.7.4減少兩義性產生的混淆問題 12.7.5虛基類不會產生兩義性 12.8總結 第13章虛函數 13.1指向對象的指標 13.2虛函數 13.3拳擊遊戲 13.4繼承是否可以實現多態性 13.5在編譯時的靜態聯編 13.6在運行時的靜態聯編 13.7在編譯時的動態聯編 13.8在運行時的動態聯編 13.9調用虛函數 13.9.1在虛函數中調用成員函數 13.9.2三種調用虛函數的方式比較 13.10被繼承的虛函數仍然是虛函數 13.11系統是如何調用虛函數的 13.12在虛函數中使用成員名限定 13.13虛析構函數 第14章陣列 14.1陣列的基本用法 14.1.1什麼是陣列 14.1.2陣列元素 14.1.3陣列下標越界 14.1.4倒序輸出 14.1.5將陣列的下標定義為常量 14.1.6手動運算元組元素 14.1.7陣列的初始化 14.2陣列的用途 14.2.1求平均考試成績 14.2.2兔子繁殖問題 14.2.3數字排序問題 14.3陣列在記憶體中的分佈 14.4輸出陣列名稱 14.5陣列名稱與函數 14.6傳遞與接收 14.7陣列與函數 14.7.1函數傳參實例一——求陣列所有元素的和 14.7.2函數傳參實例二——用遞增法查找資料 14.7.3函數傳參實例三——用二分法查找數據 14.7.4函數傳參實例四——判斷陣列是否按照順序排列 14.7.5函數傳參實例五——判斷陣列排列方式後執行不同的函數 14.8陣列在物件中的傳參 14.9陣列物件 14.10在陣列物件中初始化成員變數 14.11指標陣列 14.12枚舉常量與陣列.. 14.13多維陣列 14.14多維陣列的初始化 14.15字元陣列 14.16重載陣列下標操作符 第15章鏈表 15.1聲明鏈表結構 15.2簡單的圖書鏈表 15.2.1圖書鏈表 15.2.2類的鏈表 15.3動態鏈表 15.3.1動態鏈表的建立 15.3.2解決輸入字元造成閉環的問題 15.3.3動態鏈表的顯示 15.3.4動態鏈表的刪除 15.3.5動態鏈表的插入 15.3.6鏈表統計 15.3.7使用鏈表 15.4完整的動態鏈表清單 15.5鏈表使用案例——走迷宮 15.5.1創建Windows應用程式專案 15.5.2創建窗口 15.5.3載入圖片 15.5.4控制碼是什麼 15.5.5顯示圖片 15.5.6動畫 15.5.7鍵盤控制人物移動 15.5.8迷宮牆壁 15.5.9走迷宮 15.5.10用鏈表記錄行走路線 第16章多態性 16.1為什麼要使用多重繼承 16.2在派生類中增加函數 16.3使用多重繼承 16.4多重繼承中初始化構造函數的參數 16.5多個子基類共用一個父基類 16.6虛基類 16.7慎用多重繼承 16.8空的虛函數 16.9抽象類和純虛函數 16.10純虛函數 16.11複雜的抽象結構 第17章類的特殊成員 17.1靜態成員變數 17.2私有靜態成員變數 17.3靜態成員函數 17.4靜態成員的使用 17.5函數指標 17.6函數指標陣列 17.7函數指標也可以作為函數的參數 17.8使用typedef簡化函數指標的聲明及定義 17.9類的函數指標 17.10成員函數指標陣列 第18章字串 18.1char型字串 18.2string型字串 18.2.1string型字串的賦值 18.2.2string型字串的合併 18.2.3string型字串的部分合併 18.2.4string型字串的替換 18.2.5string型字串的複製 18.2.6string型字串的插入 18.2.7string型字串的刪除 18.2.8string型字串的查找 18.2.9string型字串的比較 18.2.10判斷string型字串是否為空 18.3字串的使用 18.3.1swap()交換兩個字串的內容 18.3.2將string型字串轉為char型字串 18.3.3char型字串與函數 18.3.4函數如何返回字串 18.4結構體 18.4.1結構體的賦值 18.4.2結構體與函數 18.4.3結構體與string 18.5string陣列與函數 18.6流的使用 18.6.1重載輸出運算符> 18.7編寫一個String類 18.7.1創建String類 18.7.2創建可自動調節大小的String類字串物件 18.7.3限制陣列越界 18.7.4用複製構造函數實現字串的賦值功能 18.7.5用重載賦值運算符函數實現真正的字串賦值功能 18.7.6用重載輸出運算符operator()函數實現字串的輸入 18.7.8用重載比較運算符實現字串的比較 18.7.9為String類添加字串的相加功能 18.7.10為String類添加字串的+=功能 18.7.11完成後的String類 第19章代碼重用 19.1包含 19.2將String類作為包含類 19.3為book類重載執行相加運算的成員函數 19.4包含對系統造成的消耗 19.5按別名傳遞book物件 19.6包含指向另一個類的指標 19.6.1數據類Date 19.6.2鏈表類Node 19.6.3標籤類linkelist 19.6.4頭節點類HeadNode 19.6.5尾節點TailNode類 19.6.6中間節點InterNode類 19.6.7InterNode類的構造函數 19.6.8InterNode類的插入函數 19.6.9全部程式 19.7將頭節點.中間節點和尾節點合併為一個節點 19.7.1數據類Date 19.7.2由Date類派生的圖書類Book 19.7.3由Date類派生的藥品類medica 19.7.4創建一個節點類Node 19.7.5用來操作節點類Node的list類 19.7.6list類的getfirst()方法 19.7.7list類的operator[]方法 19.7.8list類的repeat()方法 19.7.9list類的insert()方法 19.7.10list類的find()方法 19.7.11重寫的藥品管理全部程式 19.8利用類的包含來實現代碼重用 19.9私有繼承 19.10什麼時候使用私有繼承,什麼時候使用包含 19.11保護繼承 第20章友元類與嵌套類 20.1友元類 20.2嵌套類 第21章流 21.1流的操作 21.1.1緩衝 21.1.2流和緩衝區 21.1.3標準輸入輸出物件 21.1.4重定向 21.1.5對象代表流 21.2用cout輸出 21.2.1重載運算符operator