C++學習筆記(三)記憶體模型、名稱空間、物件和類 阿新 • • 發佈:2018-12-13 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 該函式不會修改被隱式地訪問的物件