- 類的聲明放在頭文件中,類的實現(xiàn)放到cpp文件中
- 如果要把一個類的函數(shù)定義了內(nèi)聯(lián)函數(shù),可以在聲明中直接定義,或者在實現(xiàn)中添加inline關(guān)鍵字。
- 如果類沒有任何構(gòu)造函數(shù),那么系統(tǒng)會提供一個無參的默認構(gòu)造函數(shù)。如果提供了任何形式的構(gòu)造函數(shù),系統(tǒng)將不再提供無參的默認構(gòu)造函數(shù)。
創(chuàng)建類對象的方式
Person p; // 調(diào)用無參構(gòu)造函數(shù)
Person p1("David", 12); // 調(diào)用有參默認構(gòu)造函數(shù)
Person p_person = new Person("Frank", 12); // 調(diào)用有參默認構(gòu)造函數(shù)
Person p2 = {"david", 23}; // C++11的{}初始化方式
Person p3{"Frank", 12}; // C++11,省略等號
Person p4{}; // C++11,調(diào)用無法構(gòu)造函數(shù)
const 成員函數(shù)
如果一個對象被const修飾,那么這個對象所有屬性將不再改變
// const類型對象,對象屬性不再改變
const Person p("david", 12);
但是如果這個對象,調(diào)用了可以改變屬性的函數(shù),那么編譯器將會報錯,因此需要在函數(shù)后面聲明一個 const,表示函數(shù)不會修改對象的屬性
// 聲明
void show() const;
// 定義
void show() const
{
// ...
}
const函數(shù)規(guī)則: 如果函數(shù)不修改對象的屬性,那么盡量聲明為const函數(shù)。
this指針
this指針指向調(diào)用函數(shù)的類對象,因此如果要返回類對象,必須執(zhí)行解引操作,也就 *this。
類的常量
如下定義方式是錯誤的
class Test
{
const int MONTHS = 12;
double cost[MONTHS];
};
類的聲明只是一個形式,在沒有創(chuàng)建對象之前,MONTHS不會被分配內(nèi)存,因此編譯器在編譯這段代碼時,無法識別MONTHS的值。
可以使用枚舉或靜態(tài)變量,在類的聲明中創(chuàng)建常量,因為它們在編譯期就分配了內(nèi)存
class Test
{
// 靜態(tài)變量在編譯期就分配內(nèi)存
static const int MONTHS = 12;
double cost[MONTHS];
};
class Test
{
enum {MONTHS = 12};
double cost[MONTHS];
};