我试着重载操作< <操作符重载<<错误
const ostream & operator<<(const ostream& out, const animal& rhs){
out << rhs.a;
return out;
}
似乎即时得到一个错误,因为IM返回一个常量,也因为第一个参数是常量refrence对ostream对象。
cout << objectOfAnimal1 << objectOfAnimal2 ;
它工作得很好,如果我改变了返回类型和运营商签名这一个:
ostream & operator<<(ostream& out, const animal& rhs)
您正在尝试将数据写入ostream,这不是一个非常“常量”的操作! – FatalError
@FatalError你能告诉我在哪里修改对象 – AlexDan
const意味着对象不会被修改;当你写cout << objectofanimal1时,你正在写入你标记为const的ostream。编译器足够聪明,知道它不能是const –