this指針
this指針是啥
- this指針并不是對象本身的一部分施掏,不會影響sizeof的結(jié)果
- this指針其實就是對象本身的地址俺亮。
this指針與虛指針
- this指針不是對象本身的一部分狠轻,而虛指針是對象的透明成員涯雅,是對象的一部分痴晦。
- 虛指針放在對象的起始位置肛根,this指針保存的也是對象的起始地址摔认。所以this指針指向虛指針
具體實現(xiàn)探究可見http://www.reibang.com/writer#/notebooks/42912661/notes/68571491/preview最后部分
this指針與成員函數(shù)
實際上顽照,編譯器將成員函數(shù)轉(zhuǎn)換為非成員函數(shù)狼荞,經(jīng)過下面三步
- 給函數(shù)添加額外參數(shù)——this辽装;
- 將對每一個nonstaitc data member的存取操作改為this指針來存取相味;
- 將member function 重寫成一個外部函數(shù)拾积。對函數(shù)名采用mangling 處理,使之成為獨一無二的語匯丰涉;
可見拓巧,成員函數(shù)實現(xiàn)最重要的一步是引入了this指針。
當(dāng)調(diào)用成員函數(shù)時一死,會將當(dāng)前對象的this指針當(dāng)做傳入成員函數(shù)肛度,(加一個隱性參數(shù)this),成員函數(shù)通過這個this指針來對對象的data member進行存取投慈。
注:靜態(tài)成員函數(shù)無法使用this指針承耿,應(yīng)為靜態(tài)成員函數(shù)是"class specific"的冠骄,類獨有一份,并不會(也不需要)將對象的地址傳給它