问:为什么不能重载为所需类的成员函数?
答:因为重载为成员函数在调用时是有this指针的,且this只能指向该类的对象,而输入输出流的使用对象只能是cout或者cin,所以不能重载为所需类的成员函数。
倒是可以重载为ostream的成员函数,但是源码没法改变,所以只能重载为全局函数。
又因为重载后的运算符会访问到所需类的私有成员,所以只能将其重载为所需类的友元函数。
问:为什么不能重载为所需类的成员函数?
答:因为重载为成员函数在调用时是有this指针的,且this只能指向该类的对象,而输入输出流的使用对象只能是cout或者cin,所以不能重载为所需类的成员函数。
倒是可以重载为ostream的成员函数,但是源码没法改变,所以只能重载为全局函数。
又因为重载后的运算符会访问到所需类的私有成员,所以只能将其重载为所需类的友元函数。