友元函数实现左移右移操作符重载

传智扫地僧课程学习笔记。


首先要数的是,

操作符重载的正规实现方式是,成员函数,

然后我们再次要补一刀的是,

那友元函数又为何要存在?

cout<<"hey"<<endl; //这没错

可是输出一个自定义类对象,就会报错,

但我们又没法获得cout的源码,

所以就只能通过友元函数的方式来实现,重载左移操作符,

ostream& operator<<(ostream &out, Complex &c1)
{
	out<<"12345 生活真是苦"<<endl;
	out<<c1.a << " + " << c1.b << "i" << endl;
	return out;
}
//2 函数返回值当左值 需要返回一个引用
cout << c1  << "aaddddd";

//
//cout.operator<<(c1) .operator<<("aaddddd");
//void.operator<<("aaddddd");

补一句:对于输出我们自定义对象,会自动调用我们实现的函数,

对于输出对象是字符串,会调用我们平时使用的实现,

最后,注意返回引用,



ps:

operator+,

函数调用是c.openator+的形式,

所以如果是27+c1,

效果就是27.operator+,

这就是错的,

所以调用得是c1+27,不知道你明白我说的意思不?

然后就是,重载也有一些限制,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值