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