zoukankan      html  css  js  c++  java
  • return *this和return this的区别

     别跟我说, return *this返回当前对象, return this返回当前对象的地址(指向当前对象的指针)。

          正确答案为:return *this返回的是当前对象的克隆(当然, 这里仅考虑返回类型为A 没有考虑返回类型为A& )。return this返回当前对象的地址(指向当前对象的指针), 下面我们来看看程序吧:

    #include <iostream>   
    using namespace std;   
        
    class A   
    {   
    public:   
        int x;   
        A* get()   
        {   
            return this;   
        }   
    };   
        
    int main()   
    {   
        A a;   
        a.x = 4;   
        
        if(&a == a.get())   
        {   
            cout << "yes" << endl;   
        }   
        else   
        {   
            cout << "no" << endl;   
        }   
        
        return 0;   
    }   
    

          结果为:yes

     

          再看:

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

         结果为:

    4

    no

  • 相关阅读:
    js实现去重字符串
    js查找水仙花数
    js实现找质因数
    jQuery插件(多级菜单)
    Pycharm安装常见问题
    Python-Excel循环写入
    1110 距离之和最小 V3
    1109 01组成的N的倍数
    1393 0和1相等串
    1043 幸运号码
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4355472.html
Copyright © 2011-2022 走看看