【发布时间】:2020-02-09 21:06:08
【问题描述】:
基类有一个接受参数的值构造函数。它没有默认构造函数。
下面使用了一个base 类指针,它设置为等于堆上某个derived 类对象的地址。这显式调用了derived 的值构造函数。有没有办法在这一行显式调用base 的值构造函数?我理解另一种选择是您可以让派生类构造函数调用基类构造函数。
base *ptr = new derived(args);
【问题讨论】:
-
不,C++ 不能以这种方式工作。只有派生类的构造函数调用基类的构造函数。您提到的“替代方案”是 C++ 工作的唯一方式。
-
@SamVarshavchik 我认为他可以通过使用
using Base::Base;来使用它,但是这里的两个构造函数有一个 arg,所以是一个新的歧义。 -
@asmmo 在这种情况下,派生构造函数仍然隐藏基,如果它们具有完全相同的签名(成员函数的 using-declaration 与块范围 using-declaration 的工作方式不同)
标签: c++ inheritance constructor