16.C++中的this指针
在之前學(xué)習(xí)Python時(shí),接觸到self形參,它是指向類對(duì)象的一個(gè)地址。
在C++學(xué)習(xí)過程中,也有這樣的機(jī)制,那就是this指針。
我們?cè)谡{(diào)用成員函數(shù)的時(shí)候,實(shí)際上是替類的對(duì)象調(diào)用它!成員函數(shù)通過一個(gè)名為this的額外的隱式參數(shù)來訪問調(diào)用它的那個(gè)對(duì)象!當(dāng)我們調(diào)用成員函數(shù)的時(shí)候,用請(qǐng)求的該函數(shù)的對(duì)象的地址來初始化this形參。即編譯器負(fù)責(zé)把對(duì)象的地址傳遞給this形參。
因?yàn)閠his的目的總是指向這個(gè)對(duì)象,因此,this默認(rèn)是常量指針!我們不允許改變this中的地址。
有時(shí)候我們?yōu)榱吮苊庹{(diào)用的成員函數(shù)修改調(diào)用對(duì)象的內(nèi)容,常常把這個(gè)成員函數(shù)聲明為常量成員函數(shù),常見的做法是在函數(shù)的聲明之后添加const關(guān)鍵字!
sales_data& combine(const sales_data&) const;默認(rèn)的情況下,this的類型是指向類類型非常量版本的常量指針。即是: sales_data * const
也就是,this指針保存的地址不能改變,但是指向的對(duì)象的內(nèi)容可以改變。
當(dāng)我們?cè)诔蓡T函數(shù)聲明之后添加const關(guān)鍵字之后,就將this修改為?? const? sales_data * const? ,避免調(diào)用的成員函數(shù)修改調(diào)用對(duì)象的內(nèi)容。
定義一個(gè)返回this對(duì)象的函數(shù)
sales_data& sales_data::combine(const sales_data & rhs) {units_sold += rhs.units_sold;revenue += rhs.revenue;return *this; }我們無須使用隱式的this指針訪問函數(shù)調(diào)用者的某個(gè)具體成員,而是需要把調(diào)用函數(shù)的對(duì)象當(dāng)作是一個(gè)整體來訪問。return語句解引用this指針以獲得執(zhí)行該函數(shù)的對(duì)象。
總結(jié)
以上是生活随笔為你收集整理的16.C++中的this指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15.赋值运算符为什么返回类的引用?不是
- 下一篇: 17.深浅拷贝和写时拷贝