下面关于 C++ 类和对象的说法,错误的是( )。
逐项分析每个选项,利用C++语法规则和算法知识判断正误。注意隐含条件(如整型溢出、栈溢出)。
注意题目问的是"错误的是"还是"正确的是",避免看反。选项中若有绝对化表述通常错误。
【考点】C++ 类与对象|默认访问权限|虚函数规则
本题位于 GESP 八级 C++ 核心模块,命题人想卡住的是对类与 struct 语法差异的机械记忆。绝大多数考生会误以为 struct 也是 private 默认,却忘了 struct 才是 public 默认,这是考察基础语法的经典陷阱。
解题链条很简单:先看选项 A,析构函数确实可以为虚函数,这是多态继承的必要条件,命题人放在这里是为了检验你是否知道虚析构的必要性;选项 B,构造函数永远不能为虚函数,因为构造时对象类型尚未完全确定,无法实现虚表机制,这是 C++ 最底层的规则之一;选项 C,class 默认访问权限为 private,struct 默认访问权限为 public,这是 C++ 最基础的区别。
命题人最阴险的陷阱在于 D 选项,它把 struct 的默认权限偷换成 private,利用的是考生对 class 和 struct 区别的模糊记忆。如果你只背了"成员默认 private"这个结论,而没有理解 struct 才是 public 默认,就会掉进这个坑。A 和 B 选项看似简单,实则考察你对虚函数机制的深层理解,特别是虚析构函数在继承体系中的作用。
站在命题人角度,如果把题目改成"关于成员默认访问权限的描述,正确的是",答案就会变成 C,这考察的是对 class 和 struct 默认权限的精确记忆。刷到这类题时,先问自己:struct 的默认访问权限是 public 还是 private?这是 C++ 的核心语法点之一。