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

  • 相关阅读:
    第13讲——使用类
    第12讲——对象和类
    第11讲——面向对象编程
    第10讲——名称空间
    数论19——高斯消元
    贪心思想
    重要的转变(感觉自己最近堕落必读)
    java面试
    Java泛型
    系统设计
  • 原文地址:https://www.cnblogs.com/hdk1993/p/4355472.html
Copyright © 2011-2022 走看看