this指針
特性
(1)this指針的類型:類類型* const。
(2)this指針并不是對(duì)象本身的一部分,不影響sizeof的結(jié)果。
(3)this是一個(gè)指針,它時(shí)時(shí)刻刻指向?qū)ο蟮膶?shí)例。
(4)this指針的作用域在類成員函數(shù)的內(nèi)部(不嚴(yán)謹(jǐn))。
(5)this指針是類成員函數(shù)的第一個(gè)默認(rèn)隱含參數(shù),編譯器自動(dòng)維護(hù)傳遞。
(6)只有類的非靜態(tài)成員函數(shù)中才可以使用this指針,其它成員函數(shù)都不可以。
_thiscall調(diào)用約定
(1)_thiscall只能夠在類的成員函數(shù)上;
(2)參數(shù)從右向左壓棧;
(3)如果參數(shù)個(gè)數(shù)確定,this指針通過ecx傳給被調(diào)用者。如果參數(shù)不確定,this指針在所有參數(shù)被壓棧后壓入堆棧;
(4)參數(shù)個(gè)數(shù)不定的,調(diào)用者清理堆棧,否則函數(shù)自己清理堆棧。
this指針是否為空?
當(dāng)將空的this傳給test函數(shù)時(shí),test沒有調(diào)用任何函數(shù),因此執(zhí)行此函數(shù),沒有報(bào)錯(cuò);
當(dāng)把空的this傳給change函數(shù)時(shí),通過this指針調(diào)用this-》name,由于this是空的,因此會(huì)出錯(cuò)。
總結(jié):
(1)NULL對(duì)象指針可以調(diào)用成員函數(shù);
(2)通過對(duì)象調(diào)用成員函數(shù),對(duì)象的指針會(huì)被傳入函數(shù)中,指針名稱為this;
(3)NULL對(duì)象指針調(diào)用成員函數(shù)時(shí),只要不訪問此對(duì)象的成員變量,則程序正常運(yùn)行;
(4)NULL對(duì)象指針調(diào)用成員函數(shù)時(shí),一旦訪問此對(duì)象的成員變量,則程序崩潰。
-
封裝
+關(guān)注
關(guān)注
128文章
9012瀏覽量
147368 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71607 -
C++
+關(guān)注
關(guān)注
22文章
2120瀏覽量
76521 -
this
+關(guān)注
關(guān)注
0文章
5瀏覽量
3373
發(fā)布評(píng)論請(qǐng)先 登錄
淺談C/C++里的指針
MATLAB代碼轉(zhuǎn)c++封裝dll供labview調(diào)用
請(qǐng)問STM32 C++底層封裝怎么實(shí)現(xiàn)?
為什么使用指針?C++中的“指針”
如何從C轉(zhuǎn)向C++ Effective C++ PDF中文版教材免費(fèi)下載
C++程序設(shè)計(jì)教程之指針的詳細(xì)資料說(shuō)明

C++的引用和指針
C語(yǔ)言 / C++基礎(chǔ)面試知識(shí)大集合

C++智能指針的底層實(shí)現(xiàn)原理

評(píng)論