美文网首页
今天看到的一个有趣面试题:return *this和return

今天看到的一个有趣面试题:return *this和return

作者: 凉稀饭豆腐脑 | 来源:发表于2016-12-12 20:27 被阅读0次

    原文地址:http://blog.csdn.net/stpeace/article/details/22220777

    别跟我说, 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 == a.get())  
        {  
            cout << "yes" << endl;  
        }  
        else  
        {  
            cout << "no" << endl;  
        }  
      
        return 0;  
    }  
    

    结果为:
    4
    no
    最后, 如果返回类型是A&, 那么return *this返回的是当前对象本身(也就是其引用), 而非副本。

    相关文章

      网友评论

          本文标题:今天看到的一个有趣面试题:return *this和return

          本文链接:https://www.haomeiwen.com/subject/qwfvmttx.html