class C { public: C(int a) { x = a; } private: int x; }; class D :public C { public: D(int a) :y(a){} private: int y; };指出错误并说明原因
时间: 2024-03-22 21:37:21 浏览: 98
详细介绍c的指针与int类型的使用
5星 · 资源好评率100%
在类D的构造函数中,应该显式地调用其基类C的构造函数来初始化从C继承的成员变量x。否则,编译器会默认调用基类C的默认构造函数来初始化x,但是在C中并没有默认构造函数,因此编译会失败。正确的代码应该是:
```
class C {
public:
C(int a) { x = a; }
private:
int x;
};
class D : public C {
public:
D(int a) : C(a), y(a) {}
private:
int y;
};
```
这里在D的构造函数中显式地调用了C的构造函数来初始化x,同时也初始化了y。
阅读全文