C++中const對象與類成員

const對象


  • const關鍵字能夠修飾對象
  • const修飾的對象為只讀對象
  • 只讀對象的成員變量不允許被改變
  • 只讀對象是編譯階段的概念,運行時無效
  • C++中的const成員函數
    • const對象只能調用const的成員函數
    • const成員函數中只能調用const成員函數
    • const成員函數中不能直接改寫成員變量的值
  • const成員函數的定義:
    • Type ClassName::function(Type p) const
    • 類中的函數聲明與實際函數定義中都必須帶const關鍵字
#include <stdio.h>

class Test
{
    int mi;
    int mn;
public:
    int mj;
    Test(int i);
    Test(const Test& t);
    int getMi();
    int Test::getMn()const;
};

Test::Test(int i)
{
    mi = i;
    mn = i;
}

Test::Test(const Test& t)
{
    
}
    
int Test::getMi()
{
    return mi;
}

int Test::getMn()const
{
    //這里會報錯。因為不可以修改成員變量
    mn = 2;
    
    return mn;
}

int main()
{
    //定義只讀對象
    const Test t(1);
    
    //這里肯定報錯,因為是只讀對象
    t.mj = 0;
    
    //這里也會報錯,因為const對象只能調用const成員函數
    printf("t.getMi() = %d", t.getMi());
    
    //這里不會報錯,因為const對象可以調用const成員函數
    printf("t.getMi() = %d", t.getMn());
    
    return 0;
}

類成員


  • 從面向對象的角度
    • 對象由屬性(成員變量)和方法(成員函數)構成
  • 從程序運行的角度
    • 對象由數據和函數構成
    • 數據可以位于棧、堆和全局數據區
    • 函數只能位于代碼段
  • 結論
    • 每一個對象擁有自己獨立的屬性(成員變量)
    • 所有的對象共享類的方法(成員函數)
    • 方法能夠直接訪問對象的屬性
    • 方法中的隱藏參數 this 用于指代當前對象
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容