假设类A派生自B,并且A和B都有无参数构造函数。要从A中调用B的构造函数,应使用: A. A(): B() { ... } B. A(): { B(); ... } C. B(): A() { ... } D. B(): { A(); ... }
时间: 2023-06-25 21:04:43 浏览: 169
应该使用选项C,B(): A() { ... }来从A中调用B的构造函数。在派生类的构造函数初始化列表中,可以调用基类的构造函数。构造函数初始化列表的语法如下:
```
DerivedConstructor() : BaseConstructor() {
// constructor body
}
```
因此,在这种情况下,A是派生类,B是基类,应该在A的构造函数初始化列表中调用B的构造函数。
相关问题
派生类构造函数体中是否可以调用基类的构造函数
是的,派生类构造函数体中可以调用基类的构造函数,通过使用基类初始化列表(base initializer list)来实现。在派生类构造函数的初始化列表中,可以指定基类构造函数的参数。例如,下面是一个派生类构造函数调用基类构造函数的示例:
```
class Base {
public:
Base(int x) {
// 构造函数代码
}
};
class Derived : public Base {
public:
Derived(int x, int y) : Base(x) {
// 构造函数代码
}
};
```
在上面的示例中,Derived 类继承自 Base 类,并且在 Derived 类的构造函数中通过初始化列表调用了 Base 类的构造函数,传递了参数 x。这样就能够在创建 Derived 对象时,同时调用 Base 类的构造函数,完成基类和派生类的初始化。
派生类构造函数体中可以调用基类构造函数吗
是的,派生类构造函数体中可以通过使用基类的构造函数来初始化继承的成员变量。可以通过在派生类构造函数的成员初始化列表中调用基类构造函数来实现。例如:
```
class Base {
public:
Base(int x) {
// 基类构造函数的实现
}
};
class Derived : public Base {
public:
Derived(int x, int y) : Base(x) {
// 派生类构造函数的实现
}
};
```
在上面的例子中,`Derived` 类的构造函数通过在成员初始化列表中调用 `Base` 类的构造函数来初始化继承自 `Base` 类的成员变量。