(1)對於const成員函數,從const關鍵字必須同時出如今聲明和定義處,若只出如今一處,就會出現編譯時錯誤。函數
(2)struct關鍵字和class關鍵字的區別就是在於默認訪問標號不一樣。若是類是struct關鍵字定義的,則在第一個訪問標號以前的成員是公有的;若是類是class關鍵字定義的,則這些成員是私有的。this
(3)類的定義以分號結束。分號是必需的,由於在類定義以後能夠接一個對象定義列表。指針
(4)成員函數具備一個附加的隱含參數,即指向該類對象的一個指針,這個隱含指針命名爲this,與調用成員函數的對象綁定在一塊兒。對象
(5)在普通的非const成員函數中,this的類型是一個指向類類型的const指針,能夠改變this所指向的值,可是不能改變this保存的地址;在const成員函數中,thisci
類型是一個指向const類類型的對象的const指針,即不能改變this指向的值,也不能改變this指針保存的地址。編譯器
不能從const成員函數中返回指向類對象的普通引用,const成員函數只能返回*this做爲一個const引用。it
基於成員函數是否爲const,能夠重載一個成員函數。編譯
(6)可變數據成員:mutable。永遠不能爲const,甚至當它是const對象的成員時也是如此。const成員函數能夠改變mutable成員。table
(7)const構造函數是沒必要要的,建立一個類類型的const對象時,運行一個普通的構造函數來初始化該const對象。class
(8)構造函數初始化列表只在構造函數的定義中而不是在聲明中定義。執行構造函數分爲兩個階段:初始化階段、普通計算階段(由構造函數體內的全部語句組成)。
(9)有些成員必須在構造函數初始化列表中進行初始化,對於這樣的成員,在構造函數體中對它們賦值不起做用。沒有默認構造函數的類類型的任何成員,以及const或引用類型成員,無論是哪一種類型,都必須在構造函數初始化列表中進行初始化。
(10)在構造函數初始化列表中,成員初始化的順序就是在類中定義成員的次序。因此,須要注意成員初始化列表中各數據成員的次序,按照與成員聲明一致的次序編寫構造函數初始化列表是個好注意。
(11)一個類哪怕只定義了一個構造函數,編譯器也不會再生成默認構造函數了。只有當一個類沒有定義構造函數時,編譯器纔會自動生成一個默認構造函數。
(12)explicit關鍵字只能用於類內部的構造函數的聲明上,在類的定義體外部所作的定義再也不重複它。做用是抑制由單個形參構造函數定義的隱式轉換。
(13)友元:容許訪問類的非公有成員,同時仍然阻止通常的訪問。
(14)static成員是與類相關聯的,並不與該類的對象相關聯。
static成員函數不能被聲明爲const,也不能並聲明爲虛函數。static成員函數沒有this指針,它能夠直接訪問該類的static成員,但不能直接使用非static成員。static關鍵字出如今類定義體中函數的聲明處,外部定義不出現)。
static數據成員必須在類定義體的外部定義,且只能定義一次。不能再類定義體的內部進行初始化。
const static數據成員能夠再類定義體內進行初始化,該數據成員仍必須在類定義體外進行定義,但定義時無需在指定初始值。
static數據成員的類型能夠是該成員所屬類的類型,非static成員被限定聲明爲其自身類對象的指針或引用。
static數據成員能夠做爲默認實參,非static數據成員不能用做默認實參,由於它的值不能獨立於所屬的對象而使用。