16.C++中的this指针
生活随笔
收集整理的這篇文章主要介紹了
16.C++中的this指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在之前學習Python時,接觸到self形參,它是指向類對象的一個地址。
在C++學習過程中,也有這樣的機制,那就是this指針。
我們在調用成員函數的時候,實際上是替類的對象調用它!成員函數通過一個名為this的額外的隱式參數來訪問調用它的那個對象!當我們調用成員函數的時候,用請求的該函數的對象的地址來初始化this形參。即編譯器負責把對象的地址傳遞給this形參。
因為this的目的總是指向這個對象,因此,this默認是常量指針!我們不允許改變this中的地址。
有時候我們為了避免調用的成員函數修改調用對象的內容,常常把這個成員函數聲明為常量成員函數,常見的做法是在函數的聲明之后添加const關鍵字!
sales_data& combine(const sales_data&) const;默認的情況下,this的類型是指向類類型非常量版本的常量指針。即是: sales_data * const
也就是,this指針保存的地址不能改變,但是指向的對象的內容可以改變。
當我們在成員函數聲明之后添加const關鍵字之后,就將this修改為?? const? sales_data * const? ,避免調用的成員函數修改調用對象的內容。
定義一個返回this對象的函數
sales_data& sales_data::combine(const sales_data & rhs) {units_sold += rhs.units_sold;revenue += rhs.revenue;return *this; }我們無須使用隱式的this指針訪問函數調用者的某個具體成員,而是需要把調用函數的對象當作是一個整體來訪問。return語句解引用this指針以獲得執行該函數的對象。
總結
以上是生活随笔為你收集整理的16.C++中的this指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 15.赋值运算符为什么返回类的引用?不是
- 下一篇: 17.深浅拷贝和写时拷贝