在C++编译系统中,其类库中提供输入流类istream和输出流类ostream,cin和cout分别是两个类的对象。
重载两运算符格式如下:
istream & operator >> (istream &, 自定义类 &);
ostream & operator << (ostream &, 自定义类 &);
并且只能将其重载为友元函数,而不能作为自定义类的成员函数, 原因如下:
定义为成员函数,那么就隐含this指针了,你要知道重载其实也是一种函数,那么函数就有调用他的对象。如果是成员函数,那么调用他的对象就肯定是相对应的类对象了,
但是<<和>>调用的对象肯定只能是cout或者cin,那么就不能定义为成员函数了,只有定义成友元,那么就可以把cin,cout作为一个参数传进你重载的操作符函数里面去了。
如果一定要定义为成员函数,则代码示例如下:
ostream & operator<<(ostream &output)
{
return output;
}
所以在运用这个<<运算符时就变为这种形式了:data<<cout; 这不符合人的习惯。
还有如何判断调用的是否是重载的流插入符还是预定义的流插入符。
int main()
{
Time T1;
cout<<T1<<5<<endl;
return 0;
}<<右侧如果为友元函数的自定义类,则为重载的流运算符,如果是标准类型的数据,那就是正常的预定义流运算符,这一点还要注意。
转载请注明原文地址: https://ju.6miu.com/read-1000359.html