派生构造函数中如何避免多次调用基类构造函数?
时间: 2024-10-16 17:04:04 浏览: 22
在派生类的构造函数中调用基类的构造函数
在 C++ 中,为了避免在派生构造函数中多次无谓地调用基类的构造函数,特别是在派生构造函数中有多个初始化步骤的时候,你可以选择以下几种方法:
1. **成员初始化列表** (Member Initializer List): 你可以在派生类的构造函数定义时,直接列出对基类成员和派生类成员的初始化。这样只会调用一次基类的构造函数。
```cpp
class Derived : public Base {
public:
Derived(int derivedVal, int baseVal)
: Base(baseVal), derivedValue(derivedVal) {}
private:
int derivedValue;
};
```
2. **虚继承(Virtual Inheritance)**: 如果你不希望在每个实例上都存储一份完整的基类指针,而是想要共享基类的实现,可以考虑使用虚继承。但是注意,这通常用于解决耦合性较强的问题,并不是为了避免构造函数调用。
```cpp
class Derived : virtual public Base {
// ...
};
```
3. **构造函数内调用**: 如果上述方法不合适,你也可以在派生构造函数的内部只调用一次基类构造函数。但这可能会导致一些代码冗余,不如使用成员初始化列表清晰。
```cpp
Derived::Derived(int derivedVal, int baseVal)
: Base(baseVal), derivedValue(derivedVal)
{
}
```
阅读全文