EasyC++61,this指针
C++ this 指针 Easy 61
2023-06-13 09:11:31 时间
作者 | 梁唐
大家好,我是梁唐。
这是EasyC++系列的第61篇,this指针。
this指针
还是Stock
股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。
const Stock & Stock::topVal(const Stock &s) const {
if (s.total_val > total_val) {
return s;
}else {
return ????;
}
}
这段代码当中有一些问题,我们一个一个来说。
首先说函数签名,前面都没有问题,问题出现在签名末尾的const
。这是我们第一次在函数的末尾看到const
,这个用法只能用在类或结构体的成员函数中,而不能用在普通函数里。
它表示这个函数不会修改任何成员变量的值,末尾加上const
的函数称为常量成员函数。
常量函数有一些特殊的性质:
- 能被任何函数调用,只能调用常量函数
- 能被任何对象调用,但
const
对象只能调用const
函数
性质不是非常复杂,但有些像是绕口令,需要从const
常量的性质角度出发理解一下。
代码当中第二个问题就是一堆问号的地方,这里我们想要return
当前对象,但是我们不知道如何表示。为了解决这个问题,C++当中创建了一个特殊的指针叫做this
,它用来指向调用成员函数的对象,也就是当前对象。
所以有了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
本质上是一样的,是编译器替我们做了优化。
相关文章
- EasyC++31,内联函数
- C++的this指针
- C++中this指针的本质
- c++语言截取字符串,详解C++ string常用截取字符串方法
- c++获取子类窗口句柄位置_C++中各种获取窗口句柄的方法「建议收藏」
- 棋盘的完美覆盖问题,c++代码实现
- 深入理解C++11_c++ string char
- c++ auto类型_auto C++
- C++ vector初始化_vector>初始化
- C++基础——C++面向对象之类、对象与继承基础总结(类和对象概念、构造函数与析构函数、this指针、继承)
- C/C++递归实现全排列
- 基于OpenVINO在C++中部署YOLOv5-Seg实例分割模型
- C++:哈希:闭散列哈希表
- ORA-22954: This multiset operation is not supported for this element type. ORACLE 报错 故障修复 远程处理
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法详解编程语言
- C++谓词函数(无师自通)
- C++虚函数表(多态的实现原理)
- C++文件类(文件流类)有哪些?
- 深入C++中API的问题详解
- C++基础入门教程(四):枚举和指针