C++ 我可以让子类隐式继承基类构造函数吗?
假设我有:C++ 我可以让子类隐式继承基类构造函数吗?,c++,inheritance,c++14,class-constructors,C++,Inheritance,C++14,Class Constructors,假设我有: class A { public: A(int x_) : x(x_) {} int x; }; class B: public A { }; class C: public A { }; 使用此代码,B和C将不会有任何构造函数(复制构造函数除外)。我想更改类A(不是B或C)中的某些内容,以便B和C都将继承A的构造函数。这有可能吗?不可能隐式地拥有它们。您可以通过以下方式显式使用构造函数: class B: public A { using A::
class A {
public:
A(int x_) : x(x_) {}
int x;
};
class B: public A { };
class C: public A { };
使用此代码,B和C将不会有任何构造函数(复制构造函数除外)。我想更改类
A
(不是B
或C
)中的某些内容,以便B
和C
都将继承A
的构造函数。这有可能吗?不可能隐式地拥有它们。您可以通过以下方式显式使用构造函数:
class B: public A { using A::A; };
class C: public A { using A::A; };
不可能隐式地拥有它们。您可以通过以下方式显式使用构造函数:
class B: public A { using A::A; };
class C: public A { using A::A; };
不,原因是要做到这一点,你必须从A中自动生成B类和C类的代码。但我不确定我是否看到了所有可能的情况,因此没有回答@Pixelchemist的可能重复:这个问题问为什么我在这里写的代码不会导致ctor继承。我问是否可以添加(或更改)一些东西来实现继承。所以,不是重复。不,原因是为了实现这一点,你必须从a中自动生成B类和C类的代码。但我不确定我是否看到了所有可能的情况,因此没有一个答案可能是@Pixelchemist的重复:这个问题问到为什么我在这里写的代码不会导致ctor继承。我问是否可以添加(或更改)一些东西来实现继承。所以,不是傻瓜。可能是因为我用了
:
而不是:
;-)那太糟糕了,但是+1告诉我这个坏消息。还有,你的回答可能在第一节课结束后就结束了,我知道其他的。“但好吧。”einpoklum像素化学家怎么会知道这一点?我认为他能告诉你怎么做是件好事。请记住,答案不仅针对你,也针对搜索此答案的所有其他人。他们可能不知道你可以显式继承构造函数。@NathanOliver:我确实明确说过我不想改变关于B和C的任何东西。这就是为什么我举了两个子类而不是一个子类作为例子。可能是因为我用了:
而不是:
;-)那太糟糕了,但是+1告诉我这个坏消息。还有,你的回答可能在第一节课结束后就结束了,我知道其他的。“但好吧。”einpoklum像素化学家怎么会知道这一点?我认为他能告诉你怎么做是件好事。请记住,答案不仅针对你,也针对搜索此答案的所有其他人。他们可能不知道你可以显式继承构造函数。@NathanOliver:我明确说过我不想改变关于B和C的任何东西。这就是为什么我举了两个子类ratheer而不是一个子类作为例子。