c++中输入输出流为什么必须重载为所需类的友元

问:为什么不能重载为所需类的成员函数?

答:因为重载为成员函数在调用时是有this指针的,且this只能指向该类的对象,而输入输出流的使用对象只能是cout或者cin,所以不能重载为所需类的成员函数。

倒是可以重载为ostream的成员函数,但是源码没法改变,所以只能重载为全局函数

又因为重载后的运算符会访问到所需类的私有成员,所以只能将其重载为所需类的友元函数

你可能感兴趣的:(C/C++)