【问题标题】:Inheritance C++ issue when assigning base class to sub class将基类分配给子类时的继承 C++ 问题
【发布时间】:2011-10-20 03:31:20
【问题描述】:

这可能是一个关于继承的愚蠢问题,但对于为什么不允许我这样做并没有多大意义。我继承的基类是std::string

class A : public std::string

当我使用class A 时,我想这样做:

A text;
std::string str = "hello";
text = str;

编译器抱怨没有二元运算符= 来执行此操作。

我想从字符串继承的原因是添加一些额外的功能,但不会丢失std::string 默认提供的功能。

基类不能自动分配给子类有什么原因吗?

谢谢。

【问题讨论】:

    标签: c++ inheritance operators operator-overloading


    【解决方案1】:

    您不能继承赋值运算符,它们被给予特殊处理。您可以使用using 将它们从基类中调出。

    此外,从标准提供的类继承是非常糟糕的,除了 iostream。

    【讨论】:

    • 非常感谢您的回答。然后我将切换到使用普通成员 std::string 变量。
    【解决方案2】:

    基类不能自动分配给子类有什么原因吗?

    是的。这是因为基类 不是 子类。您只能以另一种方式分配:将子类实例分配给基类实例就可以了,因为子类是基类。

    这是一般规则;另一个答案解释了std::string 的具体错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      相关资源
      最近更新 更多