• return *this 与return this分别是什么,有什么区别


    学习了该博客http://blog.csdn.net/stpeace/article/details/22220777   加上自己的理解

    this是个指针,存在于类的非静态成员函数内部,return this 返回的是指向该对象的指针,或 返回的是当前该对象的地址。

    return *this 返回当前对象的引用,或者说返回该对象本身 还是当前对象的克隆

    代码整理了一下,根据输出地址是否相同来判断是对象本身还是对象的克隆:

    #include <iostream>  
    using namespace std;  
    
    class A  
    {  
    public:  
    	A(int a = 1, int b = 1):x(a),y(b) 
    	{ }
    	  
    	A &get() 
    	{
    		return *this;
    	}  
    private:
    	int x;
    	int y;
    };  
    
    int main()  
    {  
    	A a(1,2);
    	cout << &a << endl;
    	cout << &a.get() <<endl;  
    }  
    

     输出地址为: 地址一模一样,说明这两者是a 和 get函数返回的 *this 是同一个东西。

    如果将

    A &get() 
        {
            return *this;
        }  
    改为
    A get() 
        {
            return *this;
        }  

    则 输出地址为 ,两者地址不一样,即a 和 return *this 地址不一样,但是所含数据一样,说明返回 是a 对象的一个拷贝,在空间中另一块地方存着和a相同数据的对象。

    但是,如果get()的返回类型是内置类型,如int,该怎么证明 return *this ,是对象的拷贝还是对象本身?

    目前的思路是 return *this 的返回类型是 A ,而 this 的返回类型是A *, 但int get()的返回类型是int,如何从int类型转换成A类型,有没有这种转换,好像没有啊。。。。 但是int get()中确实存在this指针,这个this指针指向

    调用该函数的对象,但是 *this 究竟是该对象本身呢,还是该对象的拷贝呢,目前还没验证出来。

  • 相关阅读:
    如何把一个一般的git库变成“裸库”?
    MacOSX下杀掉sudo进程
    nginx FastCGI错误Primary script unknown解决办法
    Lua继承userdata
    Unity图文混排
    C++轻量级跨平台文件系统API
    lua_next()
    重载方法匹配算法
    C++模板函数只能全特化不能偏特化
    xcode离线安装包下载
  • 原文地址:https://www.cnblogs.com/strivingforever/p/8527301.html
Copyright © 2020-2023  润新知