C++输入输出运算符重载注意事项

1.输出运算符重载声明方法:

ostream& operator<< (ostream &, const Test &);

因为ostream对象是不支持复制的,所以第一个参数和返回的参数均是引用。第二个参数是操作对象,为了避免传入对象时发生对象的复制(即调用复制构造函数),这里也使用引用。又为了避免修改这个对象,所以使用const限定。

2.输入运算符重载声明方法:

istream& operator>> (istream &, Test &);

同上理,istream是不支持复制的,所以这里均使用引用,第二个参数使用引用也是为了避免复制发生。

全局的观察上述两个声明,可以发现,每个参数和返回都是引用,这个原因上面已经解释了。

3.输出运算符重载定义方法:

ostream& operator<< (ostream &out, const Test &test){
		out << "value = " << test.value << endl;
		return out; 
}
可以看到,函数体内用来做输出的是第一个形参out,而不是cout,这里要搞清楚了。返回的依旧是一个ostream,这样就可以接着输出了,才支持下面的使用方法:

cout << test << endl;
输出了test后紧接着输出endl,如果不返回ostream对象,这样的使用就不成立。

4.下面是一个代码示例:

#include <iostream.h>
//using namespace std;

class Test{
public:
	Test(){value = 0;}
	Test(const Test&){}
	Test operator= (const Test&){}
	~Test(){}
	friend ostream& operator<< (ostream &, const Test &);
	friend istream& operator>> (istream &, Test &);
//private:
	int value;
};

ostream& operator<< (ostream &out, const Test &test){
		out << "value = " << test.value << endl;
		return out; 
}

istream& operator>> (istream &in, Test &test){
	cout << "input value:";
	in >> test.value;
	return in;
}

void main()
{
	Test test;
	cin >> test;
	cout << test << endl;
}







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值