在my last question上构建,是否可以使派生类继承其基类的构造函数?例如,如果我定义了两个这样的类:
class Base {
public Base(){}
}
public Derived() {
}
实例化派生类时,将自动调用基类的构造函数。如果我将另一个构造函数添加到基类,
class Base {
public Base(int x){}
}
是否可以使用 构造函数构造派生的类?我的意思是不必添加像
这样的东西public Derived() {
public Derived(int x) : base(x) {}
}
答案 0 :(得分:3)
不,不是。你必须明确添加它们; only 默认值是调用base()
的无参数构造函数,如果不添加任何构造函数,则会得到它。在少数情况下它可能会很好(特别是当基础上有很多构造函数时),而我想象有一些工具(可能是R#?我没有检查过)可能有助于自动化它 - 但没有任何内置。
答案 1 :(得分:2)
排序......
class Base {
protected Base() : this(default(int)) {}
public Base(int x){}
}
public Derived() {
}
将强制Derived
使用参数的默认值调用重载的构造函数。这可能是,也可能不是,你想要发生的事情。通过将默认构造函数标记为protected
,可以防止外部调用者使用默认构造函数进行实例化,但允许派生类执行此操作。