面试重点-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"#include 
using 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:空指针访问成员函数
下一篇:C++对象模型和this指针

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年03月02日 04时03分29秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java jstat gc_分析JVM GC及内存情况的方法 2019-04-21
php pclzip.lib.php,php使用pclzip类实现文件压缩的方法(附pclzip类下载地址) 2019-04-21
php dns更新,php_mzdns: 站群,大量域名 通过 dns 服务商 api 批量添加 ip 工具。你懂的~ 基于 mzphp2 框架。... 2019-04-21
jdk 1.8 java.policy,JDK1.8 导致系统报错:java.security.InvalidKeyException:illegal Key Size 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
nums在python_程序找到一对(i,j),其中nums [i] + nums [j] +(i -j)在Python中最大化?... 2019-04-21