今天做c++题目碰到的问题 :
如何用类中同一个成员函数 既可以输出一个值 又可以作为可修改的左值:
上图中A::getValue()的作用为返回一个int,
下图中getvalue()显然不能作为 可修改的左值:
因为要同时实现上图中23、24行,
想了许久,
发现可以这样子改:
增加重载函数<<和把上图中的getValue()的返回类型改为A&:
组合起来便可以完成类中一个成员函数同时作为可修改的左值和直接用<<输出
代码如下,还不太懂可以拿去自己的编译器上尝试、理解:
class A {
public:
int num;
A(int t) { num = t; }
A(const A& p) { num = p.num; }
friend ostream& operator <<(ostream& out,const A p) { out << p.num; return out; }
int getValue() { return this->num; }
A& getValue(){ return this->num; }
};
int main()
{
int m=3, k=10;
A a(m);
cout << a.getValue() << endl;
a.getValue() = k;
cout<<a<<endl;
return 0;
}