C++ 对象函数返回值问题(a.get() =m)

http://cxsjsxmooc.openjudge.c...

答案:

A &GetObj(){
    return *this;
} 

a.GetObj() = m;

此时这个语句此时如何理解?尤其是这个点运算符..
变成它本身?

阅读 5.1k
1 个回答

GetObj()函数返回该对象的引用. 所以a.GetObj()相当于

A &r = a;
r = m;

所以再通过m隐式转换成A的对象, 在通过默认的赋值构造函数赋值.

#include <iostream>
class A {
public:
    int val;
    A(int v): val(v) {  }
    A& GetObj() { return *this; }
};

int main()
{
    A a(4);
    std::cout << a.val << std::endl;
    a.GetObj() = 3;
    std::cout << a.val << std::endl;
    A &r = a;
    r = 3;
    std::cout << a.val << std::endl;
    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题