C++重载小问题class Human{friend ostream& operator(ostream& os,const Human& human)public:Human(
C++重载<<小问题
class Human
{
friend ostream& operator<<(ostream& os,const Human& human);
public:
Human(){name="";age=0;weight=0.0;}
private:
string name;
int age;
double weight;
};
求重载<<的具体写法,是否可以写为Human的成员函数,带一个参数重载
求大神们赐教,感激不尽~
[解决办法]
1. 用friend重载操作符,几乎都有至少两个参数
2. << 必须用friend函数来重载,理由:
运算符重载时,如果用类的成员函数进行重载,则该运算符的左值必须是该类的一个对象或者是该类的对象引用。如果运算符左边的操作数是不同类的对象,则该运算符的重载函数必须作为一个非成员函数来实现。在楼主给出的代码中, “<<”的左值是ostream对象(即cout),这个显然不是类Human的对象,所以必须用友元函数来实现。
[解决办法]
参考:
运算符重载小结
[解决办法]
<<是输出,输出时将一个对象输出显示出来,不会修改对象的值,所有可以用const修饰参数human
但是 >>是输入,输入就要改变human的成员,此时是不可以用const的,将const去除即可。
