在派生的类中使用构造函数显示基类不存在默认构造函数是什么意思
时间: 2023-06-16 21:03:30 浏览: 404
派生类与基类的构造函数-继承与派生
这个意思是指,在派生类中如果你定义了一个构造函数,而基类中又没有默认构造函数(无参构造函数),那么你就需要在派生类的构造函数中显式地调用基类的构造函数,以确保基类的成员变量得到正确的初始化。
例如,假设有一个基类`Base`,它只有一个带参数的构造函数`Base(int x)`,并且没有默认构造函数。现在你想派生一个类`Derived`,并在其中定义一个构造函数`Derived(int x, int y)`,你需要在`Derived`的构造函数中显式地调用`Base`的构造函数来初始化`Base`的成员变量,否则编译器会报错:
```c++
class Base {
public:
Base(int x) { ... }
};
class Derived : public Base {
public:
Derived(int x, int y) { ... } // 编译错误:没有调用 Base 的构造函数
};
```
解决方法是在`Derived`的构造函数中使用初始化列表来调用`Base`的构造函数,如下所示:
```c++
class Derived : public Base {
public:
Derived(int x, int y) : Base(x) { ... } // 正确:调用了 Base 的构造函数
};
```
这样就能确保`Base`的成员变量得到正确的初始化了。
阅读全文