1. 程式人生 > >C++之不同物件的成員函式如何引用指定物件的資料成員

C++之不同物件的成員函式如何引用指定物件的資料成員

C++成員函式儲存問題點選開啟連結

可知C++成員函式不佔用物件的儲存空間,而是在物件外的空間,而且所有物件共用一段成員函式程式碼,那在不同物件的成員函式如何保證引用指定物件的資料成員呢?


關鍵祕籍——this指標

    每個成員函式都有一個特殊的this指標,指向本類的物件,其值為當前被呼叫成員函式所在的物件的起始地址。

例如:int Box::volume( )

      {return ( height * width * length); 

      }

      C++將其自動處理為:

      int Box::volume(Box *this)     //即int Box::volume(&a)  a為物件;

      {return ( (*this).height * (*this).width * (*this).length);

      }

      this:隱式使用,編譯器自動實現的,無需認為新增。

總之,呼叫物件a的成員函式f = 呼叫成員函式f時使this指標指向物件a,從而訪問a物件的成員。

C++成員函式儲存問題點選開啟連結

可知C++成員函式不佔用物件的儲存空間,而是在物件外的空間,而且所有物件共用一段成員函式程式碼,那在不同物件的成員函式如何保證引用指定物件的資料成員呢?


關鍵祕籍——this指標

    每個成員函式都有一個特殊的this指標,指向本類的物件,其值為當前被呼叫成員函式所在的物件的起始地址。

例如:int Box::volume( )

      {return ( height * width * length); 

      }

      C++將其自動處理為:

      int Box::volume(Box *this)     //即int Box::volume(&a)  a為物件;

      {return ( (*this).height * (*this).width * (*this).length);

      }

      this:隱式使用,編譯器自動實現的,無需認為新增。

總之,呼叫物件a的成員函式f = 呼叫成員函式f時使this指標指向物件a,從而訪問a物件的成員。