const修飾成員函式
阿新 • • 發佈:2022-04-04
常函式:
- 成員函式後加const後我們稱為這個函式為常函式
- 常函式內不可以修改成員屬性
- 成員屬性宣告時加關鍵字mutable後,在常函式中依然可以修改
常物件:
- 宣告物件前加const稱該物件為常物件
- 常物件只能呼叫常函式
this指標的本質是一個指標常量,指標的指向不可修改 如果想讓指標指向的值也不可以修改,需要宣告常函式
示例:
class Person { public: Person() { m_A = 0; m_B = 0; } //this指標的本質是一個指標常量,指標的指向不可修改 //如果想讓指標指向的值也不可以修改,需要宣告常函式void ShowPerson() const { //const Type* const pointer; //this = NULL; //不能修改指標的指向 Person* const this; //this->mA = 100; //但是this指標指向的物件的資料是可以修改的 //const修飾成員函式,表示指標指向的記憶體空間的資料不能修改,除了mutable修飾的變數 this->m_B = 100; } void MyFunc() const { //mA = 10000; }public: int m_A; mutable int m_B; //可修改 可變的 }; //const修飾物件 常物件 void test01() { const Person person; //常量物件 cout << person.m_A << endl; //person.mA = 100; //常物件不能修改成員變數的值,但是可以訪問 person.m_B = 100; //但是常物件可以修改mutable修飾成員變數 //常物件訪問成員函式 person.MyFunc(); //常物件不能呼叫const的函式 }int main() { test01(); system("pause"); return 0; }