C++this指針詳情
還是Stock
股票這個類,假設我們要實現(xiàn)一個方法,比較一下當前股票和傳入的股票, 返回價格高的那個股票。在我們實現(xiàn)的時候,會遇到一點問題。
const Stock & Stock::topVal(const Stock &s) const { ? ? if (s.total_val > total_val) { ? ? ? ? return s; ? ? }else { ? ? ? ? return ????; ? ? } }
這段代碼當中有一些問題,我們一個一個來說。
首先說函數(shù)簽名,前面都沒有問題,問題出現(xiàn)在簽名末尾的const
。這是我們第一次在函數(shù)的末尾看到const
,這個用法只能用在類或結(jié)構(gòu)體的成員函數(shù)中,而不能用在普通函數(shù)里。
它表示這個函數(shù)不會修改任何成員變量的值,末尾加上const
的函數(shù)稱為常量成員函數(shù)。
常量函數(shù)有一些特殊的性質(zhì):
能被任何函數(shù)調(diào)用,只能調(diào)用常量函數(shù)
能被任何對象調(diào)用,但const
對象只能調(diào)用const
函數(shù)
性質(zhì)不是非常復雜,但有些像是繞口令,需要從const
常量的性質(zhì)角度出發(fā)理解一下。
代碼當中第二個問題就是一堆問號的地方,這里我們想要return
當前對象,但是我們不知道如何表示。為了解決這個問題,C++當中創(chuàng)建了一個特殊的指針叫做this
,它用來指向調(diào)用成員函數(shù)的對象,也就是當前對象。
所以有了this之后,這段代碼可以寫成:
const Stock & Stock::topVal(const Stock &s) const { ? ? if (s.total_val > total_val) { ? ? ? ? return s; ? ? }else { ? ? ? ? return *this ? ? } }
另外,this
指針也可以拿來訪問當前對象當中的成員變量,比如我們想要訪問當前的total_val
,可以寫成this->total_val
,我們直接用total_val
本質(zhì)上是一樣的,是編譯器替我們做了優(yōu)化。
到此這篇關于C++this指針詳情的文章就介紹到這了,更多相關C++this指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言獲取Shell返回結(jié)果的實現(xiàn)方法
下面小編就為大家?guī)硪黄狢語言獲取Shell返回結(jié)果的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-07