【部落格1】c++測試this指標的傳入及型別

想成為大程式設計師的小程式設計師發表於2019-04-08

內容一:this指標的型別

測試程式碼:
在這裡插入圖片描述
測試結果:

在這裡插入圖片描述
結果分析:由於typeid測試型別時,const與非const沒有區分,所以結果少了const
真正型別應該是:型別*const
在這裡插入圖片描述
內容二:測試this指標作為類成員函式的形參情況

測試分析: 常見的函式呼叫規則有:cdecl,thiscall,fastcall,stdcall
其中對c++類成員函式的呼叫是採用thiscall,且this指標會通過ecx暫存器傳入成員函式

測試程式碼:
在這裡插入圖片描述
除錯檢視反彙編結果:
在這裡插入圖片描述
在這裡插入圖片描述
彙編結果分析:
1.對普通成員函式的呼叫,this指標會通過ecx暫存器傳入,而對靜態成員函式則不會。可以看到在call呼叫前普通成員函式將this指標由ecx暫存器傳入,但是在呼叫靜態成員函式的時候,call之前並沒有傳入this指標。
2.這也是靜態成員函式無法使用物件的資料成員的原因
3.普通成員函式中當形參跟資料成員重名的時候需要用this指標指明使用的是哪一個,否則使用的是你的形參而不是類的資料成員。

大三學生一枚,文章均非抄襲或者模仿,均為原創,僅代表個人觀點,如果文章有錯誤的地方,歡迎在下方提出,每條評論我都會去認真看並回復,同時感謝指正的前輩。

相關文章