我可以使子类隐式继承基类构造函数吗?

ein*_*ica 1 c++ inheritance class-constructors c++14

假设我有:

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

class B: public A { };
class C: public A { };
Run Code Online (Sandbox Code Playgroud)

使用此代码,B和C将不具有任何构造函数(复制构造函数除外).我想改变的东西类A(不是BC),这样既BC将继承的构造A.这有可能吗?

Pix*_*ist 8

隐含地拥有它们是不可能的.您可以通过以下方式显式提供构造函数:

class B: public A { using A::A; };
class C: public A { using A::A; };
Run Code Online (Sandbox Code Playgroud)

  • @einpoklum Pixelchemist应该如何知道这一点?我认为他提供了如何做到这一点很棒.请记住,答案不仅适合您,也适用于搜索此内容的所有其他人.他们可能不知道你可以明确地继承构造函数. (4认同)