面试重点-this指针
发布日期:2021-11-20 10:17:46
浏览次数:10
分类:技术文章
本文共 1081 字,大约阅读时间需要 3 分钟。
this指针是隐含每一个非静态成员函数内的一种指针
this指针不需要定义,直接使用即可成员函数和成员变量是分开存储的
每一个非静态成员函数只会诞生一分函数实例,也就是说多个同类型的对象会共用一块代码 那么问题来了:这一块代码是如何区分哪个对象调用自己的呢?C++通过特殊的对象指针“this”指针,解决上述问题,this指针指向被调用的成员函数所属的对象(谁调用它,this就指向谁)
this指针的用途:
1.当形参和成员变量同名时,可用this指针来区分 2.在类的非静态成员函数中返回对象本身,可使用return*this,注意此时函数返回的类型是该类的引用,如:Point& (Point是定义的类名);#include "pch.h"#includeusing namespace std;//解决名称冲突,当形参和成员变量同名时,可用this指针来区分class person { public: //构造函数 person(int age) { //age = age;//这样写是错误的,名称发生冲突 this->age = age;//这样写是正确的,this指针指向被调用的成员函数所属的对象(谁调用它,this就指向谁) } //成员函数.在类的非静态成员函数中返回对象本身,可使用return*this person& personaddage(person &p) { //因为是返回对象本身,所以前面是person而不是void等这种类型的,用引用的方式 this->age += p.age; return *this;//this指向p2的指针,而*this指向的就是p2这个对象本体,用person的引用返回本体 } int age;};void test01() { //person p;//当上面写了构造函数。则不能直接这样写,会显示报错:不存在默认构造函数,因为上面写了有参构造 person p(10); cout << "age =" << p.age << endl; }void test02() { person p1(10); person p2(10); p2.personaddage(p1); p2.personaddage(p1).personaddage(p1).personaddage(p1); cout << "p2=" << p2.age << endl;}int main(){ test01(); }
转载地址:https://blog.csdn.net/weixin_43223362/article/details/102808980 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年03月02日 04时03分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java jstat gc_分析JVM GC及内存情况的方法
2019-04-21
php linux权限,Linux权限详细介绍
2019-04-21
典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc
2019-04-21
Php contenttype类型,各种类型文件的Content Type
2019-04-21
php使用redis持久化,redis如何持久化
2019-04-21
php7.1解压包安装,【Swoole】php7.1安装swoole扩展
2019-04-21
linux centos删除安装的包,CentOS yum认为已删除的软件包仍在安装中
2019-04-21
酒店管理系统c语言带注释,酒店管理系统--C语言版.pdf
2019-04-21
c语言 实现sizeof功能,C语言简单实现sizeof功能代码
2019-04-21
c语言sin函数近似值,用泰勒公式求sin(x)的近似值
2019-04-21
c 语言登录系统源代码,c语言源代码---------------个人图书管理系统
2019-04-21
android线程通信方式,Android 主线程和子线程通信问题
2019-04-21
cps1 cps2 android,图文教程:CPS1和CPS2模拟器使用
2019-04-21
在线设计 html5 表单,html5注册表单制作-表单制作-小程序表单制作
2019-04-21
android小闹钟课程设计,《小闹钟》教学设计
2019-04-21
mysql文件系统_MySQL文件系统先睹为快(1)
2019-04-21