c++中成员函数和运算符重载细节

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天做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;
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值