繁体   English   中英

我可以在这里重载<<操作符吗?

[英]Can I overload the << operator in a base class here?

因此,我希望创建一系列从基类派生的类,并且每个类都实现虚拟方法std::string toString() const 我可以像这样在基类中为<<运算符实现重载吗?

    class BaseDataType
    {
        friend std::ostream& operator<<(std::ostream& os, const BaseDataType* obj)
        {
            os << obj->toString();
            return os;
        }

     .... rest of class

我的问题在于指定obj的输入类型。 目前,我正在每个派生类中实现重载,并指定输入类型。

我可以在基类中指定重载吗?

你说得差不多了。 一个问题是您不应该将指针用作operator<<参数,因为这些运算符通常使用引用:

friend std::ostream& operator<<(std::ostream& os, const BaseDataType& obj)
{
  os << obj.toString();

然后,您需要执行所有操作以在派生类中提供虚拟toString方法-基类中的operator<<将调用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM