博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P10-c++对象和类-03this指针详细介绍,详细的例子演示
阅读量:4047 次
发布时间:2019-05-25

本文共 1387 字,大约阅读时间需要 4 分钟。

文章目录

1. this指针的作用

假设有下面一段代码,Demo类的构造函数 的形参名和成员变量名一样,会出现什么问题?

#include 
/* author:梦悦foundation 公众号:梦悦foundation 可以在公众号获得源码和详细的图文笔记*/using namespace std;class Demo {
private: int iDemo;public: Demo(int iDemo); void Show();};Demo::Demo(int iDemo){
iDemo = iDemo;}void Demo::Show(){
cout << "iDemo:" << iDemo << endl;}int main(int argc, char *argv[]) {
cout << "---------------开始--->公众号:梦悦foundation---------------" << endl; Demo d1(2); d1.Show(); cout << "---------------结束--->公众号:梦悦foundation---------------" << endl; return 0;}

本来调用 Demo d1(2) 是期望将iDemo这个成员变量的值设置为2的,但是实际的打印结果:

meng-yue@ubuntu:~/MengYue/c++/object_class/03$ ./this_pointer---------------开始--->公众号:梦悦foundation---------------iDemo:32764---------------结束--->公众号:梦悦foundation---------------meng-yue@ubuntu:~/MengYue/c++/object_class/03$

发现结果不是我们预期的

c++给出的解决方案是 this 指针,代表的是当前访问的对象
所以讲上面的构造函数赋值语句改成下面这样,就可以了

this->iDemo = iDemo;

编译运行的结果!

meng-yue@ubuntu:~/MengYue/c++/object_class/03$ ./this_pointer---------------开始--->公众号:梦悦foundation---------------iDemo:2---------------结束--->公众号:梦悦foundation---------------meng-yue@ubuntu:~/MengYue/c++/object_class/03$

注意:

每个成员函数(包括构造函数和析构函数)都有一个this 指针。
this指针指向调用对象。
如果方法需要引用整个调用对象,则可以使用表达式*this
在函数的括号后面使用const 限定符将 this限定为const,这样将不能使用this来修改对象的值。然而,要返回的并不是this,因为this是对象的地址,而是对象本身,即*this(将解除引用运算符*用于指针,将得到指针指向的值)。现在,可以将*this作为调用对象的别名来完成前面的方法定义。

转载地址:http://qeyci.baihongyu.com/

你可能感兴趣的文章
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>