C++類的注意事項

  1. 類的聲明放在頭文件中,類的實現(xiàn)放到cpp文件中
  2. 如果要把一個類的函數(shù)定義了內(nèi)聯(lián)函數(shù),可以在聲明中直接定義,或者在實現(xiàn)中添加inline關(guān)鍵字。
  3. 如果類沒有任何構(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];
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容