今天做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;
}
本文探讨了C++中如何使一个类的成员函数既能返回值又能作为可修改的左值。通过重载<<运算符和调整getValue()函数的返回类型,实现了在输出值的同时,也能接受赋值操作,满足了不同场景的需求。
1015

被折叠的 条评论
为什么被折叠?



