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物件的成員。