通过继承,我试图在我的基类中创建一个重载输出运算符,它调用适当派生类中的输出函数以根据对象类型打印正确的数据。
如何返回可以发送到重载输出运算符的输出,以便您可以仅使用 cout << object << endl;
输出对象
例如:
ostream & operator<< (ostream &out, const person &rhs){
out << rhs.print_data();
return out;
}
ostream student::print_data(){
ostream out;
out << data;
return out;
}
ostream faculty::print_data(){
ostream out;
out << data;
return out;
}
编辑:我想知道我是否需要返回类型 ostream
或 ostream &
在打印函数中
最佳答案
流不能复制,所以如果你想返回(或作为参数传递)它必须通过引用来完成。而且您不能返回对局部变量的引用(因为它们会超出范围并“消失”)。
此外,基本的 std::ostream
对象对于创建其实例没有意义。
简单的解决方案:将流作为参数(当然是通过引用)传递给函数:
ostream& operator<< (ostream &out, const person &rhs){
return rhs.print_data(out); // No need for any output here
}
ostream& student::print_data(ostream& out){
return out << data;
}
关于c++ - 派生类的返回类型 ostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094977/