
C++ 之this指针详解
this指针的不可变性:一旦this指针被使用,它的值将不会改变,直到对象被销毁或从另一个函数返回。 隐含传递:类成员函数的第一个参数总是this指针,但开发者无法显式地在调用函数时传递它。 线性作用域:this指针仅在类的成员函数内有定义。 语法规则:只能在类的非静态成员函数内使用this指针,静态成员函数和普通函数(如global函数)不能使用。
发布日期:2021-05-14 16:35:27
浏览次数:15
分类:精选文章
本文共 1242 字,大约阅读时间需要 4 分钟。
C++中的this指针是一个非常重要的概念,常用于对象构造和成员函数操作中。理解this指针对编程来说至关重要,它允许我们通过引用对象的成员进行操作。
this指针的基本概念
在C++中,每个非静态成员函数(包括构造式和析构式)都有一个隐含的this指针。这个指针指向调用该成员函数的对象,也就是所谓的"当前对象"。通过this指针,我们可以访问对象的成员变量和调用成员函数。
this的作用域
this指针仅在类的非静态成员函数内部起作用。它是在编译时隐含定义的,类成员函数的第一参数。注意,this的类型取决于所引用类的类型,并且它是一个右值。它能否得到一个左值取决于具体的函数定义。
this指针的类型
- 类型为该类的指针(类名*const),意味着它可以是一个常量。
- 是一个右值,不能用来作为左侧运算对象。
- 不会影响对象的大小,因为它本身并不占用内存。
使用this指针的场景
通过this指针,我们可以:
- 访问对象的成员变量:
this->成员名
- 调用对象的成员函数:
this->函数名();
- 修改对象的成员变量:
this->成员名 = 值;
实际应用示例
让我们来看一个实际的例子,例如下面这个学生类的代码:
class Student {public: Student& addScore(int score);};Student& Student::addScore(int score) { this->score = this->score + score; return *this;}
在这个例子中:
Student& addScore(int score);
是学生类的成员函数定义。- 编译器在调用
addScore
时,会自动传递当前的对象引用作为this指针。 - 在函数内部,
this->score
可以访问并修改对象的成员变量。
注意事项
高级应用
通过将this指针返回,可以将函数结果转化为对象引用。例如:
Student& Student::addScore(int score) { this->score += score; return *this;}
这里,函数不仅修改了对象的成员变量,还返回了当前对象的引用,允许调用者链式编程。
总结
理解this指针是一个编程中至关重要的技能,它允许我们在成员函数内部以更灵活的方式操作对象。通过熟练掌握this指针的使用方法,我们能够更好地编写面向对象的C++代码,充分发挥对象的封装、继承和多态性等特性。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月23日 06时58分00秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
04_Mysql配置文件(重要参数)
2019-03-06
python 序列化及其相关模块(json,pickle,shelve,xml)详解
2019-03-06
JavaSE总结
2019-03-06
手动造轮子——基于.NetCore的RPC框架DotNetCoreRpc
2019-03-06
Python IO编程
2019-03-06
CSS入门总结
2019-03-06
使用 TortoiseGit 时,报 Access denied 错误
2019-03-06
基于 HTML5 WebGL 的污水处理厂泵站自控系统
2019-03-06
[系列] Go gRPC 调试工具
2019-03-06
django-表单之模型表单渲染(六)
2019-03-06
c++之程序流程控制
2019-03-06
spring-boot-2.0.3之redis缓存实现,不是你想的那样哦!
2019-03-06
httprunner学习23-加解密
2019-03-06
有道云笔记 同步到我的博客园
2019-03-06
李笑来必读书籍整理
2019-03-06
http头部 Expect
2019-03-06
Hadoop(十六)之使用Combiner优化MapReduce
2019-03-06
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
2019-03-06