C++this指針詳情
還是Stock股票這個(gè)類,假設(shè)我們要實(shí)現(xiàn)一個(gè)方法,比較一下當(dāng)前股票和傳入的股票, 返回價(jià)格高的那個(gè)股票。在我們實(shí)現(xiàn)的時(shí)候,會(huì)遇到一點(diǎn)問(wèn)題。
const Stock & Stock::topVal(const Stock &s) const {
? ? if (s.total_val > total_val) {
? ? ? ? return s;
? ? }else {
? ? ? ? return ????;
? ? }
}這段代碼當(dāng)中有一些問(wèn)題,我們一個(gè)一個(gè)來(lái)說(shuō)。
首先說(shuō)函數(shù)簽名,前面都沒(méi)有問(wèn)題,問(wèn)題出現(xiàn)在簽名末尾的const。這是我們第一次在函數(shù)的末尾看到const,這個(gè)用法只能用在類或結(jié)構(gòu)體的成員函數(shù)中,而不能用在普通函數(shù)里。
它表示這個(gè)函數(shù)不會(huì)修改任何成員變量的值,末尾加上const的函數(shù)稱為常量成員函數(shù)。
常量函數(shù)有一些特殊的性質(zhì):
能被任何函數(shù)調(diào)用,只能調(diào)用常量函數(shù)
能被任何對(duì)象調(diào)用,但const對(duì)象只能調(diào)用const函數(shù)
性質(zhì)不是非常復(fù)雜,但有些像是繞口令,需要從const常量的性質(zhì)角度出發(fā)理解一下。
代碼當(dāng)中第二個(gè)問(wèn)題就是一堆問(wèn)號(hào)的地方,這里我們想要return當(dāng)前對(duì)象,但是我們不知道如何表示。為了解決這個(gè)問(wèn)題,C++當(dāng)中創(chuàng)建了一個(gè)特殊的指針叫做this,它用來(lái)指向調(diào)用成員函數(shù)的對(duì)象,也就是當(dāng)前對(duì)象。
所以有了this之后,這段代碼可以寫(xiě)成:
const Stock & Stock::topVal(const Stock &s) const {
? ? if (s.total_val > total_val) {
? ? ? ? return s;
? ? }else {
? ? ? ? return *this
? ? }
}另外,this指針也可以拿來(lái)訪問(wèn)當(dāng)前對(duì)象當(dāng)中的成員變量,比如我們想要訪問(wèn)當(dāng)前的total_val,可以寫(xiě)成this->total_val,我們直接用total_val本質(zhì)上是一樣的,是編譯器替我們做了優(yōu)化。
到此這篇關(guān)于C++this指針詳情的文章就介紹到這了,更多相關(guān)C++this指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇
下面小編就為大家?guī)?lái)一篇淺談CMake配置OpenCV 時(shí)靜態(tài)鏈接與動(dòng)態(tài)鏈接的選擇。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
OpenCV中C++函數(shù)imread讀取圖片的問(wèn)題及解決方法
利用C++函數(shù)imread讀取圖片的時(shí)候返回的結(jié)果總是空,而利用C函數(shù)cvLoadImage時(shí)卻能讀取到圖像。怎么回事?今天小編通過(guò)本教程給大家簡(jiǎn)單說(shuō)明原因2017-03-03
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單停車(chē)場(chǎng)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單停車(chē)場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C++貪心算法處理多機(jī)調(diào)度問(wèn)題詳解
貪心算法(又稱貪婪算法)是指,在對(duì)問(wèn)題求解時(shí),總是做出在當(dāng)前看來(lái)是最好的選擇。也就是說(shuō),不從整體最優(yōu)上加以考慮,他所做出的僅是在某種意義上的局部最優(yōu)解2022-06-06
C++實(shí)現(xiàn)圖形界面時(shí)鐘表盤(pán)代碼
這篇文章主要介紹了C++實(shí)現(xiàn)圖形界面時(shí)鐘表盤(pán)代碼,涉及坐標(biāo)函數(shù)的應(yīng)用及圖形界面程序設(shè)計(jì),需要的朋友可以參考下2014-10-10

