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