自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

EasyC++,This指針

開發(fā) 后端
還是Stock股票這個(gè)類,假設(shè)我們要實(shí)現(xiàn)一個(gè)方法,比較一下當(dāng)前股票和傳入的股票, 返回價(jià)格高的那個(gè)股票。在我們實(shí)現(xiàn)的時(shí)候,會(huì)遇到一點(diǎn)問(wèn)題。

[[439937]]

大家好,我是梁唐。

this指針

還是Stock股票這個(gè)類,假設(shè)我們要實(shí)現(xiàn)一個(gè)方法,比較一下當(dāng)前股票和傳入的股票, 返回價(jià)格高的那個(gè)股票。在我們實(shí)現(xiàn)的時(shí)候,會(huì)遇到一點(diǎn)問(wèn)題。

  1. const Stock & Stock::topVal(const Stock &s) const { 
  2.     if (s.total_val > total_val) { 
  3.         return s; 
  4.     }else { 
  5.         return ????; 
  6.     } 

這段代碼當(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之后,這段代碼可以寫成:

  1. const Stock & Stock::topVal(const Stock &s) const { 
  2.     if (s.total_val > total_val) { 
  3.         return s; 
  4.     }else { 
  5.         return *this 
  6.     } 

 

另外,this指針也可以拿來(lái)訪問(wèn)當(dāng)前對(duì)象當(dāng)中的成員變量,比如我們想要訪問(wèn)當(dāng)前的total_val,可以寫成this->total_val,我們直接用total_val本質(zhì)上是一樣的,是編譯器替我們做了優(yōu)化。

 

責(zé)任編輯:武曉燕 來(lái)源: Coder梁
相關(guān)推薦

2021-11-09 10:38:16

C++Const指針

2021-10-27 16:27:20

C++指針操控

2021-11-10 10:48:36

C++函數(shù)指針

2021-10-29 09:44:50

C++指針變量

2021-12-29 20:31:40

C++多態(tài)指針

2021-12-09 10:56:50

函數(shù)C++原型

2021-11-26 00:03:20

C++編譯常量

2021-10-26 00:19:51

C++結(jié)構(gòu)體存儲(chǔ)

2021-12-08 10:43:09

C++實(shí)現(xiàn)

2021-12-10 10:45:36

C++函數(shù)Stock

2021-12-30 14:58:58

C++函數(shù)動(dòng)態(tài)

2021-11-27 11:50:09

C++靜態(tài)持續(xù)

2021-12-11 19:02:03

函數(shù)C++對(duì)象

2021-12-15 10:25:57

C++運(yùn)算符重載

2021-12-05 18:20:42

C++空間特性

2022-01-04 16:35:42

C++Protected關(guān)鍵字

2021-10-26 15:36:17

C++枚舉值類型

2021-11-30 11:04:36

C++函數(shù)語(yǔ)言

2021-12-16 10:40:11

C++運(yùn)算符重載

2021-12-26 00:08:35

C++初始化列表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)