目录
- 一,this指针的注意点
- 二,this指针存在哪里
- 三,this指针的面试坑题
- 总结
c++的类中,非静态的成员函数都有一个隐藏的this指针,在函数体中所以的成员变量都是通过this指针来访问的。但是this指针是对用户是透明的,用户不需要显示的给this指针传参,编译时会自动接收参数。

一,this指针的注意点
- 调用成员函数时,不可以显示给this指针传参
- 定义成员函数时,不能显示的声明this指针
- 在成员函数内部,可以显示的使用this指针
用一个日期类,来讲述this指针的注意点:
class Date
{
public:
void Print()
{
cout<<_year<<"/"<<_month<<"/"<<_day<<endl;
}
Date (int year,int month,int day)
{
_year=year;
_month=month;
_day=day;
]
private:
int _year;
int _month;
int _day;
}
以上就是一个日期类了,在类里面我定义了一个成员函数Print,这里要讲一下,在类中定义一个成员函数可能会被看成内联函数,想这么简单一个Print 函数一般是会别看成内联函数的。
其实这个成员函数还可以写成这样:
void Print()
{
cout<<this->_year<<"/"<<this->_month<<"/"<<this->day<<endl;
}
这样写有点画蛇添足的感觉,但是方便大家看,在成员函数中每个成员变量的访问都里离不开this指针。这个this指针隐藏在函数形参的头一位,也就是Print(Date * this)。
比如我要调用这个成员函数:
int main()
{
Date s1(2025,2,28);
Date s2(2025,3,1);
s1.Print();
s2.Print();
}
运行结果如下:
可以看到,调用结果是符合预期的,Print函数中是利用this指针来区分对象的。
错误用例:
(1)
int main()
{
Date s1(2025,2,28);
s1.Print(&s1);
}
不可以显示的给this指针传参,虽然我们知道this指针存在,但是我们不可以给this指针传参,就当潜规则吧。
(2)
void Date::Print(Date* this);
成员函数的声明以及定义都不能有this指针,这样做不行的,可以想想设计者的初心,他是嫌弃老是传地址麻烦,所以搞了一个隐藏的this指针,你再给函数传参或者定义函数时给this指针,不是多此一举嘛。
二,this指针存在哪里
this指针是成员函数第一个隐藏的指针形参,一般存在栈中。但是也是由编译器决定的,有的就存在寄存器中。
三,this指针的面试坑题
class A
{
public:
void PrintA()
{
cout<<_a<<endl;
}
void Show()
{
cout<<"Show()"<<endl;
}
private:
int _a;
};
int main()
{
A* p = nullptr;
p->PrintA();
p->Show();
}
问:以上程序可以运行嘛?会崩溃嘛?崩溃在哪里?
这是对空指针解引用导致的内存问题,所以程序崩溃了,this指针可以为空,但是不能对空指针解引用,函数PrintA中,cout<<_a<;可以写成cout<< this -> _a<; 讲到这大家应该懂了。
还有一点那么Show函数有问题嘛?没问题,因为不存在对this的解引用。
我们将PrintA函数屏蔽掉,看运行结果:
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
相关推荐:
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
SEO字:如何通过精准关键词提升网站流量与排名,赣州于都网站推广
seo要寻找什么资源,怎么找seo ,ai插画描边
ChapGPT免费爬墙,轻松访问全球互联网资源!,蜜桃ai插画
【SEO优化全攻略】提升网站流量的终极秘籍,带你轻松玩转搜索引擎优化!,金融网站推广维护
在线AI写文:开启高效创作新时代
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
SEO优化中怎么找关键词:全面解析与实战技巧,ai2002.4.8
优化综合:引领高效发展的智慧之道,电影营销的推广方式
人工AI软件的未来:智能时代的创新驱动力
seo需要学会什么编程,seo要会些什么 ,剪映怎样加ai
“赞片CMS”-让你的*站点管理更高效、便捷,日照seo平台
ChatGPT启动时遇到问题?快速解决方案让你畅享智能对话体验,ai如何保存logo
SEO文案:如何通过巧妙布局提升网站排名,吸引更多流量,娄底网站建设工作文案
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
为什么要做seo si,为什么要做* ,ai里面怎么扣二维码
AI+写文章:开启智能创作新时代
ChatGPT最近不好用了?了解这些背后的原因与解决方案,ai sketcher
AI免费生成:开启智能创作新纪元,助力你的创意无限可能
AI自动读文:让阅读更轻松、更高效的智能革命,寄ai空
SEO与网络推广机构:如何选择最适合你的数字营销合作伙伴,ai写作软件性价比高吗
亚马逊seo是什么公司的,“亚马逊” ,ai玩底特律
SEO笔记:如何打造高效的SEO策略提升网站排名,网站优化优质服务方案
360优化关键词-提升网站流量与排名的秘密武器,美拍ai
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
SEO优化:让你的网站在竞争中脱颖而出,临沧seo代理
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
seo进阶买什么书推广,seo的推广技巧 ,菩萨壁纸ai
ChatGPT:基于Transformer技术的语言模型,开创人工智能未来,AI独战OK
seo链接有什么用,seo外链是什么意思 ,one ai写作
SEO优化快:如何在短时间内实现网站流量爆发,Lacey0508ai
为什么要年前做SEO,企业为什么做seo推广 ,云南ai大数据公司
SEO包月服务:助力企业提升网站排名与流量的长期利器,网站建设流程 报读文库
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
什么是seo反连接,网站反链多好还是少好 ,网易ai产品
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
seo网赚什么意思,网站seo赚钱 ,ai打不开ai
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
SEO快速优化技术:助力网站流量暴增,轻松登顶搜索引擎,铜陵ai全网通推广软件
GPT人工智能-让未来触手可及的智慧之光,ai头花写真
SEO差价如何用SEO优化帮助企业实现成本与效益的完美平衡,盐城seo收费贵吗
pbootcms前端翻译插件-轻松实现网站多语言支持,拓展全球市场,st ai绘画
SEO优化:如何让网站更具有吸引力,散文ai写作咒语是什么
SEO要求:如何优化网站提升搜索引擎排名,助力企业获取更多流量,鹤山区网站运营推广
ChatGPT支持多种语言输入输出,让全球资讯触手可及,联想拯救者的ai写作
ChatGPT异常了:人工智能的极限与突破,ai and ethics