EasyC++,This指针

开发 后端
还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。

[[439937]]

大家好,我是梁唐。

this指针

还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。

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

这段代码当中有一些问题,我们一个一个来说。

首先说函数签名,前面都没有问题,问题出现在签名末尾的const。这是我们第一次在函数的末尾看到const,这个用法只能用在类或结构体的成员函数中,而不能用在普通函数里。

它表示这个函数不会修改任何成员变量的值,末尾加上const的函数称为常量成员函数。

常量函数有一些特殊的性质:

  • 能被任何函数调用,只能调用常量函数
  • 能被任何对象调用,但const对象只能调用const函数

性质不是非常复杂,但有些像是绕口令,需要从const常量的性质角度出发理解一下。

代码当中第二个问题就是一堆问号的地方,这里我们想要return当前对象,但是我们不知道如何表示。为了解决这个问题,C++当中创建了一个特殊的指针叫做this,它用来指向调用成员函数的对象,也就是当前对象。

所以有了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指针也可以拿来访问当前对象当中的成员变量,比如我们想要访问当前的total_val,可以写成this->total_val,我们直接用total_val本质上是一样的,是编译器替我们做了优化。

 

责任编辑:武晓燕 来源: Coder梁
相关推荐

2021-11-09 10:38:16

C++Const指针

2021-11-10 10:48:36

C++函数指针

2021-10-27 16:27:20

C++指针操控

2021-10-29 09:44:50

C++指针变量

2021-12-29 20:31:40

C++多态指针

2021-11-26 00:03:20

C++编译常量

2021-12-09 10:56:50

函数C++原型

2021-12-10 10:45:36

C++函数Stock

2021-12-30 14:58:58

C++函数动态

2021-12-08 10:43:09

C++实现

2021-10-26 00:19:51

C++结构体存储

2021-11-27 11:50:09

C++静态持续

2021-12-11 19:02:03

函数C++对象

2021-12-05 18:20:42

C++空间特性

2022-01-04 16:35:42

C++Protected关键字

2021-12-15 10:25:57

C++运算符重载

2021-10-26 15:36:17

C++枚举值类型

2021-12-16 10:40:11

C++运算符重载

2021-10-21 18:52:00

C++数组存储

2021-11-26 10:56:28

C++存储持续性
点赞
收藏

51CTO技术栈公众号