C++this指針詳情
還是Stock
股票這個(gè)類,假設(shè)我們要實(shí)現(xiàn)一個(gè)方法,比較一下當(dāng)前股票和傳入的股票, 返回價(jià)格高的那個(gè)股票。在我們實(shí)現(xiàn)的時(shí)候,會(huì)遇到一點(diǎn)問題。
const Stock & Stock::topVal(const Stock &s) const { ? ? if (s.total_val > total_val) { ? ? ? ? return s; ? ? }else { ? ? ? ? return ????; ? ? } }
這段代碼當(dāng)中有一些問題,我們一個(gè)一個(gè)來說。
首先說函數(shù)簽名,前面都沒有問題,問題出現(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è)問題就是一堆問號(hào)的地方,這里我們想要return
當(dāng)前對(duì)象,但是我們不知道如何表示。為了解決這個(gè)問題,C++當(dāng)中創(chuàng)建了一個(gè)特殊的指針叫做this
,它用來指向調(diào)用成員函數(shù)的對(duì)象,也就是當(dāng)前對(duì)象。
所以有了this之后,這段代碼可以寫成:
const Stock & Stock::topVal(const Stock &s) const { ? ? if (s.total_val > total_val) { ? ? ? ? return s; ? ? }else { ? ? ? ? return *this ? ? } }
另外,this
指針也可以拿來訪問當(dāng)前對(duì)象當(dāng)中的成員變量,比如我們想要訪問當(dāng)前的total_val
,可以寫成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)文章
C語言?struct結(jié)構(gòu)體超詳細(xì)講解
C語言中,結(jié)構(gòu)體類型屬于一種構(gòu)造類型(其他的構(gòu)造類型還有:數(shù)組類型,聯(lián)合類型),下面這篇文章主要給大家介紹了關(guān)于C語言結(jié)構(gòu)體(struct)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04C++中智能指針unique_ptr的實(shí)現(xiàn)詳解
智能指針本質(zhì)上并不神秘,其實(shí)就是?RAII?資源管理功能的自然展現(xiàn)而已,這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)?C++中智能指針的?unique_ptr,需要的可以了解下2024-01-01C語言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狢語言獲取Shell返回結(jié)果的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07重構(gòu)-C++實(shí)現(xiàn)矩陣的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄貥?gòu)-C++實(shí)現(xiàn)矩陣的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06