this指针的作用和用法
由于C++中成员变量和成员函数是分开存储的,所以每一个非静态成员函数只会诞生一份函数实例,就是多个同类型的对象会共用一块代码,如果需要让一块代码调用自己,可以用到this指针,this是C++提供的特殊的对象指针,不需要定义。
this指针指向被调用的成员函数所属的对象
第一个用途:当形参和成员变量同名时,可以用this指针来区分
struct Member
{Member(int score){this->score=score; //this->成员变量 = 形参}int score;
};
int main()
{Member n1(5);cout<<n1.score<<endl; //5
}
当然如果形参和成员变量名字不一样时,也可以不使用this指针
第二个用途:在类的非静态成员函数中返回对象本身,可使用return *this
,用于链式编程
struct Member
{Member(int score){this->score=score;}Member& AddScore(Member& n) //这里如果不使用&的话,返回的虽然也是一个对象,但是这个对象不是n1了,是临时创建出来的对象{this->score+=n.score;return *this;}int score;
};
int main()
{Member n1(5);Member n2(100);Member n3(30);n1.AddScore(n2); //5+100=105n1.AddScore(n2).AddScore(n3);//105+100+30=235cout<<n1.score<<endl; //235
}
由于AddScore()函数返回的是一个对象,对这个对象取引用,则这个对象也就是n1
struct Member
{Member(int score){this->score=score;}Member AddScore(Member& n) //这里没有使用引用,返回的虽然也是一个对象,但是这个对象不是n1了,是临时创建出来的对象{this->score+=n.score;return *this;}int score;
};
int main()
{Member n1(5);Member n2(100);Member n3(30);n1.AddScore(n2); //5+100=105n1.AddScore(n2).AddScore(n3);//105+100=205cout<<n1.score<<endl; //205
}
由于AddScore()函数返回的是一个对象,但是没有引用,则这个对象也就不是n1了,而是临时创建出来的n1’,n1’中的AddScore()函数执行一次后返回的是n1’’
this指针的作用和用法相关推荐
- typedef的作用和用法(给结构体,函数指针,数组取别名)
typedef的作用和用法 作用(typedef 能给int,double,float,char等数据类型取别名) typedef 还能给结构体取别名 typedef 还能给函数指针取别名 typed ...
- 函数指针的作用:*visit函数
定义 函数指针是指向函数的指针变量. 因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C ...
- PreTranslateMessage作用和用法
PreTranslateMessage作用和用法 PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗体的消息都要通过这里,比較经常使用,当 ...
- java package作用_java import、package作用与用法
java import.package作用与用法 有些人写了一阵子Java,可是对於Java 的package 跟import 还是不太了解很多人以為原始码 .java 档案中的import 会让编译 ...
- MySQL数据类型中DECIMAL的作用和用法
在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法. 一般赋予浮 ...
- php中pre标签,html中pre标签与code标签的作用与用法
HTML 标签 定义和用法 pre 元素可定义预格式化的文本.被包围在 pre 元素中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. 标签的一个常见应用就是用来表示计算机的源代码. 可以导致 ...
- PHP中的常见魔术方法功能作用及用法实例
这篇文章主要介绍了PHP中的常见魔术方法功能作用及用法实例,本文讲解了构造函数和析构函数__construct()和__desctruct()以及属性重载(Property Overloading)_ ...
- const修饰指针和引用的用法【转贴】
*************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...
- 、简述global关键字的作用_在C#编程中global关键字的作用及其用法
在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...
最新文章
- SQL Server Profiler工具
- R语言导入SPSS文件实战
- python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...
- Spring Cloud Alibaba即将正式毕业,Netflix之后新生力量值得期待!
- 选购计算机性能的核心指标,选电脑主要看什么参数呢?买电脑主要看什么参数,有什么技术指标?...
- C++统计难题hdu1251
- 高级数据结构---并查集
- 判断输入的字符串是否为回文_刷题之路(九)--判断数字是否回文
- 真实教育场景手写/表格/公式OCR数据集
- 《TCP/IP路由技术(第二卷)》一1.5 检测与排除EGP故障
- java四方支付系统
- 前端毕业设计:Nodejs+Vue菜鸟驿站仓库管理系统的设计与实现
- 嵌入式课程 之 霍尔传感器(编码器)实验
- 超强PHP集成开发工具:phpDesigner v7.2.1 最新版下载(附注册机)
- xheditor 内容保存时 不转义html特殊字符,XHEditor使用文档(转载收藏)
- [label][WorldPress] 一个很方便查找定位WorldPress源代码位置的网址
- SSL/TLS部署最佳实践
- 阿里云七天训练营学习(4):服务器管理软件(putty、ccaa)
- 写一个PE的壳_Part 2:ASLR+修复输入表(IAT)+重定位表支持(.reloc)
- 原生js实现运维小姐姐的九宫格抽奖活动、心跳快了