C++中this指针的用途详解

更新时间:2023-06-21 22:18:37 阅读: 评论:0

C++中this指针的⽤途详解
桂飘香⽬录
1.区分形参和变量同名时:
总结
先说结论:
1.形参和变量同名时,可⽤this指针来区分
2.在类的⾮静态成员函数中返回本⾝,可⽤return *this
1.区分形参和变量同名时:
#include <iostream>
using namespace std;
class Person
{
public:
Person(int age)
{
age = age;
}
int age;
};
void test01()
{
Person p1(18);
cout << "年龄为: " << p1.age << endl;
}
int main()
{
总监助理test01();
叉烧肉做法
system("pau");
return 0;
}
上述代码运⾏结果多少呢? 答案是-858993460 当然这个答案毫⽆意义
为什么呢将上述代码中的age选中然后会有下⾯这种情况相信⼤家知道什么意思就是编译器不会像⼈
脑⼀样将左边的age看成类的属性age,所以就导致编译器认为上述3个age是⼀回事,所以再编译器中相当于Person类的属性age没有赋值,所以进⾏输出的时候就会⽤0xCCCCCCCC来进⾏填充,就有了输出是-858993460的答案
那怎么解决上述问题呢?如下图:
在第⼀个age前⾯加上this,什么意思呢看看官⽅解释:
this指针指向被调⽤的成员函数所属的对象!
社区矫正工作总结⼤⽩话来讲就是谁调⽤这个类,this就指向谁,上述这个this指向的就是p1
当然这种错误的解决⽅法还有⼀种最简单的:在类中起属性名字的时候,尽量别和形参名取⼀样就好了
#include <iostream>
using namespace std;
睑结膜class Person
{
public:
Person(int age)
{
m_age = age;
}
Person& PersonAddAge(Person &p)
{
this->m_age += p.m_age;
return *this;
}
int m_age;
};
void test02()
{
Person p1(18);
Person p2(18);
p1.PersonAddAge(p2).PersonAddAge(p2).PersonAddAge(p2);
cout << p1.m_age << endl;
}
int main()
{
test02();
阅读思维导图system("pau");
return 0;
}
下⾯的块代码中:这块代码中有两个点胶囊英文
东方明珠照片
1.返回值类型使⽤了Person的引⽤
Person& PersonAddAge(Person &p)
{
this->m_age += p.m_age;
return *this;
}
A1:为什么要使⽤Person&的返回值
return *this就是返回函数本⾝,但是得注意返回值类型,记得做引⽤传递
总结
本篇⽂章就到这⾥了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

本文发布于:2023-06-21 22:18:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1008899.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:编译器   属性   解决
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图