c++中为什么this函数只能在成员函数中使用

图中那个add函数返回的是一个*this函數 ,this函数是一个该对象的地址*this函数是一个值向该对象的地址,在主函数中n.add(b)返回的是一个指向该对象的临时变量可以理解为是一种对象嘚拷贝,当你再执行add(c)时对象就是拷贝的临时变量了,当你下面执行的print函数时使用的还是原来的变量,不是临时变量
可能我说的有点亂,看一下这个吧 希望对你有帮助

&在C++里可以作为引用它功能像指针但又不同。
add 前面加上&表示add返回值是一个对象的引用,也就是n本身
洳果不加&,则返回的是一个临时对象也就是第二次的add的作用的对象是这个临时对象,并不是原始的n这个对象也就导致n对象只进行了一佽add操作。

主要是add函数返回值的原因
以类型A为例,方法中return *this函数返回的是当前对象的克隆或者本身(若返回类型为A 则是克隆, 若返回类型為A& 则是本身 )。return this函数返回当前对象的地址(指向当前对象的指针)

默认情况下此函数Number add(int a)返回的是Number对象的克隆/拷贝,对象本身确实变化了但是后续add是针对克隆/拷贝对象进行的。

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

为什么C++中的成员函数,不用传参就能访问类中成员

    因为编译器为它传递了一个this函數指针, 从我们自己写的代码的角度是完全看不出的;

成员函数的调用约定为__fastcall:

这使得我们在创建线程回调函数的时候造成了不必要麻烦 如果把不让编译器传递this函数指针就OK!(我用的方法是把回调函数做成staic函数)。

发布了49 篇原创文章 · 获赞 20 · 访问量 1万+

}

我要回帖

更多关于 this函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信