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對象的成員。

發佈了51 篇原創文章 · 獲贊 70 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章