关于重载流插入运算符和流提取运算符的问题

    xiaoxiao2021-12-15  36

    在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

    最新回复(0)