类 CBase 的定义如下: 在构造函数 CDerive 的下列定义中,正确的是()
class CBase { int x; public: CBase(int n) : x(n) {} // 基类构造函数 }; class CDerive : public CBase { CBase y; // 成员对象 int z; // 修正笔误 public: CDerive(int a, int b, int c); // 参数列表使用英文逗号 };
class CBase { int x; public: CBase(int n) : x(n) {} // 基类构造函数 }; class CDerive : public CBase { CBase y; // 成员对象 int z; // 修正笔误 public: CDerive(int a, int b, int c); // 参数列表使用英文逗号 };
CDerive::CDerive(int a, int b, int c) : x(a), y(b), z(c) {}
CDerive::CDerive(int a, int b, int c) : CBase(a), y(b), z(c) {}
CDerive::CDerive(int a, int b, int c) : CBase(a), CDerive(b), z(c) {}
CDerive::CDerive(int a, int b, int c) : x(a), CBase(b), z(c) {}
【解析】A 选项由于 x 在 基类 CBase 类中是私有的,所以派生类 CDerive 中无法直接访问。
B 选项正确。
C 选项调用了构造函数 CDerive(b),而 CDerive 类中没有一个参数的构造函数。
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp47