浅析C/C++ 中return *this和return this的区别

所属分类: 软件编程 / C 语言 阅读数: 80
收藏 0 赞 0 分享

首先我们知道~

class Test
{
public: 
 Test()
 { 
  return this; //返回的当前对象的地址
 }
 Test&()
 { 
  return *this; //返回的是当前对象本身
 }
 Test()
 { 
  return *this; //返回的当前对象的克隆
 }
private: //...
};

return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。

return this返回当前对象的地址(指向当前对象的指针)

我们再来看看返回拷贝那个的地址~

#include <iostream>
using namespace std;
class Test
{
public:
 int x;
 Test get()
 {
  return *this; //返回当前对象的拷贝
 }
};
int main()
{
 Test a;
 a.x = 4;
 if(a.x == a.get().x)
 {
  cout << a.x << endl;
    cout << &a << endl;
    cout << &a.get() <<endl;
 }
 else
 {
  cout << "no" << endl;
    cout << &a << endl;
    cout << &a.get() <<endl;
 }

 return 0;
}

由运行结果得知会报下列错误!!!

cpp [Error] taking address of temporary [-fpermissive]

这是因为引用了临时对象的地址而引发的警报 临时对象不可靠……

所有要注意!

下面谈谈[C++]类成员返回语句 return *this 的理解

经常会在类似 copy-assignment 的成员函数看到返回语句 return *this ,这类函数通常返回类型是所属类的引用。

类成员函数的隐式指针 class *this const 经过 *this的解引用后成为此对象本身。此时若成员函数返回类型是 class ,那么返回的将是 this 指向的对象实体的拷贝;

若返回类型是 class& ,那么将返回一个绑定在 this 指向的对象实体上的引用。

以上所述是小编给大家介绍的C/C++ 中return *this和return this的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

更多精彩内容其他人还在看

利用C语言来求最大连续子序列乘积的方法

这篇文章主要介绍了利用C语言来求最大连续子序列乘积的方法,基本的思路以外文中还附有相关ACM题目,需要的朋友可以参考下
收藏 0 赞 0 分享

用C语言判断一个二叉树是否为另一个的子结构

这篇文章主要介绍了用C语言判断一个二叉树是否为另一个的子结构,是数据结构学习当中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现的阶乘,排列和组合实例

这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言查找数组里数字重复次数的方法

这篇文章主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言简单实现计算字符个数的方法

这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

c实现linux下的数据库备份

本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

C++获得文件状态信息的方法

这篇文章主要介绍了C++获得文件状态信息的方法,包括文件状态信息、文件所在磁盘盘符、文件创建时间、访问时间及修改日期等,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言按关键字搜索文件夹中文件的方法

这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言之字符串模糊查询方法的实现

本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现BMP转换JPG的方法

这篇文章主要介绍了C语言实现BMP转换JPG的方法,涉及C#图片格式转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多