为啥重载输入输出运算符必须是非成员函数( 二 )
对于上面代码中的写法, 并非重载了标准IO库, 而是直接定义了某个运算, 调用了标准IO的对象
如p1.operator\u0026lt;\u0026lt;(std::cout);
正确的重载行为应该是让标准io库的对象调用你自定义对象operator\u0026lt;\u0026lt;
■网友
C++中的输入输出本身就是C++对左操作符和右移操作符的重载,所以:
cout \u0026lt;\u0026lt; i; (其中cout是ostream对象) 可翻译为 cout.operator\u0026lt;\u0026lt;(i);
在XXX类中利用类成员函数的形式重载输出操作符,该函数必须只有一个ostream引用类型的参数,使用该重载函数时:
x.operator\u0026lt;\u0026lt;(cout); (其中cout是ostream对象,x为XXX类型的对象) 即 x\u0026lt;\u0026lt;cout;
" x\u0026lt;\u0026lt;cout;"这种形式与常用形式不符,将会造成混淆,若要使"cout \u0026lt;\u0026lt; x;"合法,则必须在
ostream类中添加关于XXX类的输入操作符重载函数,也就是”假设输入输出运算符是某个类的成员,则它们也必须是istream或ostream的成员。“
如果利用非成员函数形式重载输入操作符,则使用时为:
【为啥重载输入输出运算符必须是非成员函数】 operator\u0026lt;\u0026lt;(cout, x); 也可以为 cout \u0026lt;\u0026lt; x;
推荐阅读
- 江苏■1月4日江苏新增境外输入新冠肺炎确诊病例1例
- 李兰娟:国外疫情持续蔓延,严防输入是当下最重要任务
- 重庆彭水县境外输入无症状感染者的密接者均为阴性
- 病例■连云港通报8日新增1例境外输入新冠肺炎确诊病例详情
- 江苏■12月8日江苏新增境外输入新冠肺炎确诊病例1例
- 广州同一入境航班检出2例输入性恶性疟个案
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
