#include <iostream>
using namespace std;
class A {
public:
int val;
A(){
val=0;
}
A( int n){
val=n;
}
A GetObj(){
return *this;
}
};
main() {
A a;
cout << a.val << endl;
a.GetObj() = 5;
cout << a.val << endl;
}
输出是 0 0 但我想实现 0 5个 那么我应该如何更改 GetObj 函数呢? 非常感谢!
最佳答案
现在,GetObj()
按值返回 A
,因此它实际上返回了 *this
的拷贝。返回的对象不是 a
- 它是一个全新的实体,从 a
创建。要使其正常工作,您需要通过引用将其返回:
A& GetObj(){
return *this;
}
不过,最好的解决方案是(恕我直言)为 val
添加一个 setter:
class A {
public:
//other things..
void SetValue(int value) {
this->val = value;
}
};
然后:
a.SetValue(5);
关于c++ 这个指针不执行构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31765917/