C 關於const的常物件成員和常成員函式

2021-09-11 19:40:53 字數 1870 閱讀 5356

首先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.當乙個成員函式被呼叫時,自動向它傳遞乙個隱含的引數,該引數是乙個指向這個成...