第一部分 C++概述
1. 面向對象的程序設計方法通過繼承inheritance 機制和動態綁定dynamic binding 機制擴展了抽象數據類型,繼承機制是對現有實現代碼的重用;動態綁定是指對現有的公有接口的重用.
2. C++是一種支持多種程序設計方法的語言,雖然我們主要把它當作面向對象的語言,但實際上它也提供對過程化的和基於對象的程序設計方法的支持,這樣做的好處是對每個問題都能夠提供最合適的解決方案。
第一章 開始
1. 分而治之divide and conquer 和逐步求精stepwise refinement
2. 此一旦錯誤被改正後應當馬上重新編譯這個循環過程通常被稱為編輯一編 譯一調試edit compile debug
3. 編譯C++程序時編譯器自動定義了一個預處理器名字__cplusplus 注意前面有兩個下劃線。在編譯標准C 時編譯器將自動定義名字__STDC__ 當然__cplusplus 與__STDC__不會同時被定義
4. 另外兩個比較有用的預定義名字是__LINE__和__FILE__,__LINE__記錄文件已經被編譯的行數,__FILE__包含正在被編譯的文件的名字
第二章 C++ 浏覽
1. C++不支持數組的抽象abstraction,也不支持對整個數組的操作
2. 對象可以靜態分配——即編譯器在處理程序源代碼時分配;也可以動態分配——即程序執行時調用運行時刻庫函數來分配。這兩種內存分配方法的主要區別是效率與靈活性之間的平衡准則不同
3. 靜態與動態內存分配的兩個主要區別:是靜態對象是有名字的變量,我們直接對其進行操作;而動態對象是沒有名字的變量,我們通過指針間接地對它進行操作.靜態對象的分配與釋放由編譯器自動處理;相反動態對象的分配與釋放必須由程序員顯式地管理.
4. 內存洩漏是指一塊動態分配的內存我們不再擁有指向這塊內存的指針因此我們沒有辦法將它返還給程序供以後重新使用
5. 構造函數和析構函數是程序員提供的函數,它們既不構造也不銷毀類的對象,編譯器自動把它們作用到這些對象上。類的構造函數主要用來初始化類對象的數據成員,析構函數主要負責釋放類對象在生命期內申請到的所有資源。
6. 為了把一個類設計成基類要做的第二個設計考慮是找出類型相關的成員函數並把這些成員函數標記為virtual 虛擬的,對於類型相關的成員函數它的算法由特定的基類或派生類的行為或實現來決定
7. 對於一個非虛擬函數的調用,編譯器在編譯時刻選擇被調用的函數;而虛擬函數調用的決定則要等到運行時刻在執行程序內部的每個調用點上,系統根據被調用對象的實際基類或派生類的類型來決定選擇哪一個虛擬函數實例。
8. 名字空間別名namespace alias 允許用一個可替代的短的或更一般的名字與一個現有的名字空間關聯起來例如,// 提供一個更一般化的別名
namespace LIB = IBM_Canada_Laboratory;
使用: LIB::Array<int> ia(1024);
在標准C++中數組類是C++標准庫的一部分,現在它不叫數組,而叫向量vector 了,當然向量是一個類。