✏️ 纠错
第 179 题 / 共 201 题
3. 下列关于C++类的说法,错误的是()。
📝 题目解析
答案:A
知识点:抽象类与继承
解析:包含纯虚函数的类是抽象类,抽象类可以包含成员变量(A错误);抽象类不能实例化对象(B正确);派生类继承基类成员,内存不小于基类(C正确);派生类若未实现基类虚函数,仍为抽象类(D正确)。

虚函数和纯虚函数可类比理解:
- 虚函数:类似“模板中可修改的方法”。如“动物”模板的“吃”方法(虚函数),默认“吃普通食物”;“猫”可修改为“吃小鱼干”,也可沿用默认逻辑。
- 纯虚函数:类似“模板中必须完成的任务”。如“动物”模板的“叫”方法(纯虚函数),仅规定“必须会叫”但不定义具体逻辑;“猫”“狗”等具体类必须自行实现“叫”的逻辑(如“喵喵叫”“汪汪叫”),否则类不合法。
选项A错误:包含纯虚函数的类是“抽象类”(如“动物”类),抽象类可包含成员变量(如“动物”类的“年龄”属性)。示例代码:
```cpp
class动物{
public:
    int年龄; // 成员变量(动物的属性)
    virtual void叫() = 0; // 纯虚函数(必须实现的任务)
};
```
“动物”类含纯虚函数“叫”,但也有成员变量“年龄”,故A错误。
选项B正确:抽象类(含纯虚函数)是“半成品模板”,无法直接定义对象(如不能直接定义“动物”对象,需定义“猫”“狗”等具体类的对象)。错误代码示例:
```cpp
动物随便一个动物; // 错误!抽象类不能直接定义对象
```
选项C正确:派生类(如“猫”)继承基类(如“动物”)的所有成员,还可能添加自身成员,因此内存不小于基类对象。
选项D正确:虚函数支持“默认实现”,派生类可选择不重写,直接使用基类的默认逻辑(如“动物”的“吃”方法默认“吃食物”,“猫”可直接沿用)。