【问题标题】:Can I make subclasses implicitly inherit base class constructors?我可以让子类隐式继承基类构造函数吗?
【发布时间】:2016-04-29 04:15:44
【问题描述】:

假设我有:

class A {
public:
        A(int x_) : x(x_) {}
        int x;
};

class B: public A { };
class C: public A { };

使用此代码,B 和 C 将没有任何构造函数(除了复制构造函数)。我想更改A 类中的某些内容(notBC),以便BC 都将继承A 的构造函数。这有可能吗?

【问题讨论】:

  • 不,原因是为了实现这一点,您必须从 A 自动生成类 B 和 C 的代码。但我不确定我是否看到了所有可能性,因此没有一个答案
  • Inheriting constructors的可能重复
  • @Pixelchemist:这个问题问为什么我在这里也写下的代码不会导致 ctor 继承。我问是否有可能添加 一些东西(或改变一些东西)来实现继承。所以,不是骗子。

标签: c++ inheritance c++14 class-constructors


【解决方案1】:

不可能隐含地拥有它们。您可以通过以下方式显式使用构造函数:

class B: public A { using A::A; };
class C: public A { using A::A; };

【讨论】:

  • 可能是因为我有: 而不是:: ;-)
  • 这太糟糕了,但是 +1 告诉我这个坏消息。另外,你的回答可能在第一期之后就结束了,我知道其余的。不过没关系。
  • @einpoklum Pixelchemist 是怎么知道的?我认为他提供了您如何做到这一点,这很棒。请记住,答案不仅适合您,也适合所有搜索此内容的人。他们可能不知道你可以显式继承构造函数。
  • @NathanOliver:我确实明确表示我不想更改 B 和 C 的任何内容。这就是为什么我给出了两个子类而不是一个作为示例。
猜你喜欢
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
相关资源
最近更新 更多