1. 程式人生 > 實用技巧 >C++(const修飾成員函式)

C++(const修飾成員函式)

const修飾成員函式

常函式:

  • 成員函式後加const後我們稱這個函式為常函式
  • 常函式內不可以修改成員屬性
  • 成員屬性宣告時加關鍵字mutable後,在常函式中依然可以修改

常物件:

  • 宣告物件前加const稱該物件為常物件
  • 常物件只能呼叫常函式

示例:

#include <iostream>
using namespace std;

class Person
{
public:
      Person
      {
            m_A=0;
            m_B=0;
      }

      //this指標本質是一個指標常量,指標的指向不可修改,
      //如果想讓指標指向的值也不可以修改,需要宣告常函式

      void ShowPerson() const
      {
            //const Type* const pointer
            //this=NULL; //不能修改指標指向 Person *const this;
            //this->m_A=100; //但是this指標指向的物件資料是可以修改的

	    //const修飾成員函式,表示指標指向的記憶體空間的資料不能修改,除了mutable修飾的變數
            this->m_B;

      }

      void MyFunc() const
      {
           // m_A=1000;
      }
public:
      int m_A;
      mutable int m_B; //可修改,可變的

};

//const修飾物件 常物件
void test01()
{
      const Person person; //常物件
      cout<<person.m_A<<endl;
      //person.m_A=100; //常物件不能修改成員變數的值,但是可以訪問

      person.m_B=100; //但是常物件可以修改mutable修飾成員變數

      //常物件訪問成員函式
      person.MyFunc(); //常物件只能呼叫常函式
}

int  main(void)
{
      test01();

      system("pause");
      return 0;
}