
[C++] this指针
发布日期:2021-05-07 00:51:08
浏览次数:17
分类:精选文章
本文共 947 字,大约阅读时间需要 3 分钟。
this指针
一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。
this指针的作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员函数的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
举个栗子
struct Sales_data { std::string isbn() const { return bookNo; }// std::string isbn() const { return this->bookNo; } std::string bookNo;};int main() { Sales_data total; std::string isbn = total.isbn(); return 0;}
插一句:定义在类内部的函数是隐式的inline函数。
正式开始解析这个例子:
首先是函数调用:total.isbn()
我们使用点运算符来访问total对象的isbn成员,然后调用它。
当我们调用isbn这个成员函数时,实际上是在替某个对象调用它。如果isbn指向Sales_data的成员(如bookNo)。则它隐式地指向调用该函数的对象的成员。
在这个例子中,isbn返回bookNo时,实际上它隐式的返回total.bookNo
成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象,当我们调用一个成员函数时,用请求该函数的对象地址初始化this。
在这个例子中,total.isbn()过程中,编译器负责把total的地址传递给isbn的隐式形参this。等价于Sales_data::isbn(&total)。调用Sales_data的isbn成员时传入了total的地址。
在成员函数内部,我们可以直接使用调用该函数的对象的成员,而无须通过成员访问运算符来做到这一点。因为this所指的正是这个对象。任何对类成员的直接访问都被看作this的隐式引用,也就是说,当isbn使用bookNo时,它隐式地使用this指向成员。等价于this->bookNo
this的目的总是指向“这个”对象,所以this是一个常量指针。我们不允许改变this中保存的地址。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月09日 06时58分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
二分查找与插入排序的结合使用
2021-05-07
892 三维形体的表面积(分析)
2021-05-07
279 完全平方数(bfs)
2021-05-07
875 爱吃香蕉的珂珂(二分查找)
2021-05-07
第十一届蓝桥杯python组第二场省赛-数字三角形
2021-05-07
BST中某一层的所有节点(宽度优先搜索)
2021-05-07
Dijkstra算法的总结
2021-05-07
Vue实现选项卡功能
2021-05-07
vue中接收后台的图片验证码并显示
2021-05-07
Vue入门学习笔记(1)
2021-05-07
趣谈win10常用快捷键
2021-05-07
数学建模更新12(数学线性规划模型1)
2021-05-07
Android,SharedPreferences的使用
2021-05-07
两款用于检测内存泄漏的软件
2021-05-07
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2021-05-07
JDK 内置的多线程协作工具类的使用场景
2021-05-08
Java 中哪些对象可以获取类对象
2021-05-08