在 C++ 语言中,关于类的继承和访问权限,下列说法正确的是( )。
C++类:构造函数(对象创建时调用)、析构函数(对象销毁时调用)、虚函数(实现多态)。构造函数不能为虚。
构造函数不能是虚函数(虚表在构造函数完成后才建立)。析构函数可以且通常应该为虚函数(防止内存泄漏)。
【考点】类的继承与访问权限|构造函数调用顺序|析构函数调用顺序
八级《面向对象基础》模块核心考点。命题人专攻"对象生命周期与成员可见性"认知盲区——70% 考生误以为继承复制了访问权限,或混淆构造/析构顺序。
逐项拆解逻辑链:A 错在 private 成员对派生类完全不可见(仅基类内可访问);B 错在私有继承将基类 public/protected 均变为 private;C 正确,基类必须先构造完成,派生类才能初始化成员;D 错在析构顺序与构造相反(先派生后基类)。
陷阱拆解:A 利用"成员复制"错觉,B 利用"继承即公开"惯性思维,D 利用"对称顺序"直觉。最阴险的细节是 C 与 D 的逆序关系——若只背结论,极易将构造/析构顺序记反。
反命题思维:若将"私有继承"改为"公有继承",B 选项即变为正确;若问"基类构造函数能否被派生类跳过",则考察默认调用机制。刷到同类题,先问"命题人是否在测试我对生命周期顺序的逆向记忆"。