1. 程式人生 > 其它 >const修飾成員函式

const修飾成員函式

常函式:

  • 成員函式後加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; }