c++类成员函数单目和双目运算符重载

首先遇到这个问题是在使用 ofstream对象的时候:

有一个自定义的类 class A ,和该类对象a。,然后我想把a的内容输出到ofstream中。怎么办呢?最直接的办法就是定义一个A类的子类my_ofstream, 然后在my_ofstream中

定义成员操作符<<如下:

class my_ostream:public ostream

{

public:

ofstream& operator<<(A a)

   {

(*this)<<a.xx<<a.xxx... //这里的xx xxx代表a的成员变量,都是基本类型

return   *this;

  }

};

注意,my_ofstream还要声明为A类的友元。


这样是不是很麻烦呢。可以采用如下的办法:


只需要定义一个全局函数

ofstream & operator<<(ofstream & os, A a)

{

os<<a.xx<<a.xxx...

return   *this;

}

这是不是很简洁呢。其实上面的,两种方法异曲同工:

在类my_ofstream中调用其成员操作符时,我们都知道编译器会自动将该对象的this指针作为暗含的参数传递给成员函数。这也正是c++类中定义单目操作符时不需要参数,而双目操作符只需要一个参数的原因。也就是如下调用等价:

a+双目操作符(参数1)=双目操作符(&a, 参数1)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值