Con*_*lor 5 c++ polymorphism inheritance constructor
假设我有一个抽象类A。A 是否可以强制从它继承的任何类实现某个构造函数原型?
例如:
class A {
public:
// purely virtual function
virtual void func() = 0;
// what i would like to be able to do
virtual A(Obj) = 0;
};
Run Code Online (Sandbox Code Playgroud)
虽然上面的纯虚函数func是合法的,但构造函数A(Obj)不能是虚函数。我想B继承自的类的实例是否A将保持抽象(或一些不可实例化或错误的等价物),直到B覆盖构造函数A(Obj)。
换句话说,我想强制 的任何子类A实现一个以 anObj作为参数的构造函数。这可能吗?
不,子类可以自由地实现它想要的任何类型的构造函数。
子类构造函数的唯一职责是构造其超类。
因此,超类有可能以较小的方式影响其子类的构造函数的工作方式。例如,如果类的构造函数采用的参数是类的内部类的实例(编辑的代码示例的微小变化),则需要子类实例化继承的内部类,以便构造其超类,或者采用现有实例作为参数,它将转发给超类的构造函数。
但就目前情况而言,差不多就是这样了。子类的构造函数的签名完全不受超类的控制。