1. 程式人生 > >C++學習筆記(三)記憶體模型、名稱空間、物件和類

C++學習筆記(三)記憶體模型、名稱空間、物件和類

    1、標頭檔案中通常包含的內容:函式原型、使用#define和const定義的符號常量、結構宣告、類宣告、模板宣告、行內函數     2、同樣可以使用條件編譯     3、靜態持續變數:外部連結性、內部連結性、無連結性靜態持續變數:外部連結性、內部連結性、無連結性         外部連結性:在程式碼塊外部宣告,不帶static,可以在程式的其他檔案中使用(全域性變數)         內部連結性:在程式碼塊外部宣告,帶static,檔案內使用,必須在包含定義程式碼的檔案中使用         無連結性:在程式碼塊內部宣告,帶static,程式碼塊內使用     4、靜態變數預設初始化為0     5、::作用域解析運算子 放在變數前面可以使用變數的全域性變數版本     6、mutable 關鍵字 用來指出即使結構(類)為const,其某個變數也是可以修改的     7、給new來的記憶體初始化  int *pi=new int (30)   或者    int *pi=new int {30}     8、大括號的初始化形式可也用於給陣列、結構初始化     9、定位new運算子 可以設定一個buffer從那個buffer中申請空間  new(地址)型別名     10、using宣告使一個名稱可用,而using編譯指令(using namespace)使所有的名稱可用         一般來說using宣告比using編譯指令更安全,因為它只匯入指定的名稱     11、通過共有空間(public)來訪問修改私有空間(private)訪問控制         類設計儘可能將公有介面與實現細節分開      12、封裝:將實現細節放在一起並將它們與抽象分開 資料隱藏(將資料放到私有部分)、將實現細節放到私有部分、將類函式定義和類函式宣告放在不同檔案     13、std::cout.precision(3);   顯示三位小數     14、呼叫成員函式使用成員運算子點(.)     15、類不能像結構體那樣被初始化,因為資料部分的訪問是私有的         所以C++有類建構函式和解構函式         建構函式沒有返回值但不能被宣告為void型別 實際上建構函式沒有宣告型別         不要用類成員名稱作為建構函式的引數名         建構函式可以被顯式或者隱式呼叫         預設建構函式,只宣告類變數,但是不賦值   只能在沒有定義建構函式時這樣幹,如果定義了建構函式這樣是不允許的     16、建構函式:類名::類名(引數)   解構函式:類名::~類名()     17、如果建構函式用了new必須提供使用了delete的解構函式     18、this指標:每個物件都有一個指向它的this指標      19、使用this指標的函式的後面要加const限定符,這樣將不能使用this來修改物件     20、返回型別為引用意味著返回的是呼叫物件本身而不是其副本     21、函式末尾加const 該函式不會修改被隱式地訪問的物件