1、編譯器分兩步處理類:首先編譯成員的聲明,然后才輪到成員函數體。因此,成員函數體可以隨意使用類中的其他成員而無須在意這些成員出現的次序。
2、C++ IO對象屬于不能被拷貝的類型,當我們在實際中需要在函數中使用的時候,只能通過引用來傳遞他們。IO類型的三個獨立的頭文件是:iostream、fstream 、 sstream
3、構造函數,任務:初始化類對象的數據成員,無論何時只要類的對象被創建,就會執行構造函數;類可以包含多個構造函數,和其他重載函數差不多,不同的構造函數之間必須在參數數量或參數類型上有所區別。
4、使用class和struct定義類唯一的區別就是默認的訪問權限不一樣,struct的默認是public,而class的默認權限是PRivate.
5、友元聲明只能出現在類定義的內部,但是在類內出現的具體位置不限,
6、在C++類內,用來定義類型的成員必須先定義后使用,這一點與普通的成員有所區別。
7、用mutable 關鍵字來修飾一個變量,一個可變數據成員永遠不會是const,即使它是const函數對象的成員,
8、基于const的重載。通過區分成員函數是否是const的,我們可以對其進行重載。
9、友元不具有傳遞性。
10 、struct X
{
friend void f() {/*友元函數可以定義在類的內部*/}
X() {f();}//錯誤:f還沒有被聲明
void g();
void h();
};
void X::g() {return f();}//錯誤:Ff還沒有被聲明
void f();//聲明定義在X中的函數
void X::h() {return f();}//正確,現在f 已經聲明在作用域中了
Note:理解友元的聲明的作用是影響訪問權限的;
11、構造函數初始化的順序:成員的初始化的順序與它們在類的定義中的出現順序一致。即在類中先定義的成員先被初始化,而并不是其在構造函數的參數列表中的出現順序。
12、類的靜態成員存在于任何對象之外,對象中不包含任何與靜態數據成員有關的數據;靜態成員函數也不與任何對象綁定在一起,它們不包含this指針。
13、靜態數據成員不是由類的構造函數初始化的,不能在類的內部初始化靜態成員,相反的,必須在類的外部定義和初始化每個靜態成員,static關鍵字只出現在類內部的聲明語句中。
新聞熱點
疑難解答
圖片精選