首先const修飾變數時初始化不能用我們平常的方式初始化
也就是下面這種方式是不正確的
class coordiante
private:
const int m_ix;
const int m_iy;
};
我們初始化乙個const修飾的變數只能用初始化列表的方式進行
class coordiante
private:
const int m_ix;
const int m_iy;
};
我們不僅可以用const來修飾乙個簡單的變數,還可以用來修飾乙個物件,用const來修飾的物件就叫做常物件成員,寫成const coordinate m_coora,或者是coordinate const m_coora
也可以用來修飾乙個函式,用const來修飾的函式就叫做常成員函式。
void changex(const coordinate *this)
this就變成了乙個常指標,通過常指標來改變資料成員的值是不被允許的。
class coordiante
void changex() const
void changex()
private:
const int m_ix;
const int m_iy;
};
在這個類中我們定義了兩個changex的函式,這兩個函式實際上互為過載,那我們在實際上使用的時候用下面的方法呼叫的才是常成員函式。
const coordinate coor(3,5);
coor.changex();
在我們一直用的coordinate類中,我們可以知曉setx函式是不可以用const修飾的,我們只能用const來修飾getx函式,修飾的getx函式就從int getx(coordinatea *this)成了int getx(const coordinatea *this),也就是說傳入的引數應該是乙個常物件成員,定義乙個const coordinate m_coora是可以使用m_coora.getx()的
比如下面的函式用const定義了乙個物件成員,沒有給定義的成員引用的函式getx const定義,編譯器就會報錯
但是我們把getx函式用const修飾了之後,就能正常的執行程式並且出結果
正確執行出結果
其實如果const修飾的是成員函式的話,如果無引數就是給函式的this指標加了const
C const成員函式和const常物件
1 可以訪問所有成員變數,但是不能修改,此類成員函式又稱 常成員函式 2 宣告或實現時必須在函式的結尾加上const,而不是在函式的開頭。int getage const 在結尾加 1 常物件只能訪問常成員函式,常成員變數和普通成員變數都可以訪問。using namespace std class ...
c 常成員函式 和 常物件
先明確幾個概念 1.常物件只能呼叫常成員函式。2.普通物件可以呼叫全部成員函式。3.當對乙個物件呼叫成員函式時,編譯程式先將物件的位址賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,由隱含使用this指標。4.當乙個成員函式被呼叫時,自動向它傳遞乙個隱含的引數,該引數是乙個指向這個成...
c 常成員函式 和 常物件
先明確幾個概念 1.常物件只能呼叫常成員函式。2.普通物件可以呼叫全部成員函式。3.當對乙個物件呼叫成員函式時,編譯程式先將物件的位址賦給this指標,然後呼叫成員函式,每次成員函式訪問資料成員時,由隱含使用this指標。4.當乙個成員函式被呼叫時,自動向它傳遞乙個隱含的引數,該引數是乙個指向這個成...