左移操作符重载

当要用到cout<<类时,编译器会报错,此时就需要程序员自己对左移操作符进行重载了:

左移操作符重载的实例:

class operatorcg{
	friend ostream& operator<< (ostream& output, operatorcg& oop);
private:
	int a;
	int b;
public:
	void SetValue(int a, int b)
	{
		this->a = a;
		this->b = b;
	}

};
ostream& operator<< (ostream& output, operatorcg& oop)
{
	output << "oop.a=" << oop.a << "    b=" << oop.b << endl;
	return output;
}
int main(void)
{
	operatorcg oop;
	oop.SetValue(10, 15);
	cout << oop;
	system("pause");
	return 0;
}
左移操作符重载:

void operator<< (ostream& output, operatorcg& oop)
{
	output << "oop.a=" << oop.a << "    b=" << oop.b << endl;
	//return output;
}
这种重载方式无法链式输出,

只是用与cout << oop这种输出一个对象的情况,要是输出多个对象就必须对操作符重载函数进行相应的改变;

ostream& operator<< (ostream& output, operatorcg& oop)
{
	output << "oop.a=" << oop.a << "    b=" << oop.b << endl;
	return output;
}
这与结论“ 函数返回值当左值必须要返回一个引用”有关

例如:cout<<oop1<<oop2<<endl;

如果用第一种则变形成cout<<oop1<<void<<endl;所以编译器会报错;





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值