C++ 如何将ostream函数实现为类的成员函数,而不是友元函数,以便我可以用作虚拟函数?

C++ 如何将ostream函数实现为类的成员函数,而不是友元函数,以便我可以用作虚拟函数?,c++,object-oriented-analysis,C++,Object Oriented Analysis,我想使用friend ostream&function of base class来显示派生类对象的详细信息。我们如何做到这一点?我如何制作类的成员函数而不是成员函数,以便它可以用作虚拟函数并显示派生类对象的详细信息。流插入器将流作为其第一个流参数,因此当插入器是成员函数时,它是流类的成员,而不是您正在编写的类。因此,它不能是类中的虚拟函数。但是它可以调用类中的虚拟函数 class my_class { virtual std::ostream& put(std::ostream

我想使用friend ostream&function of base class来显示派生类对象的详细信息。我们如何做到这一点?我如何制作类的成员函数而不是成员函数,以便它可以用作虚拟函数并显示派生类对象的详细信息。

流插入器将流作为其第一个流参数,因此当插入器是成员函数时,它是流类的成员,而不是您正在编写的类。因此,它不能是类中的虚拟函数。但是它可以调用类中的虚拟函数

class my_class {
    virtual std::ostream& put(std::ostream& out) const {
        out << "here we go!\b";
    }
friend std::ostream& operator<<(std::ostream& out, const my_class& my_object);
};

std::ostream& operator<<(std::ostream& out, const my_class& my_object) {
    my_object.put(out);
}
class my\u class{
虚拟std::ostream&put(std::ostream&out)常量{

您可以实现一个函数
virtualvoidput(std::ostream&os);
,并在全局操作符实现覆盖中使用该函数。