关于以下代码(基类 Instrument 的 play() 未声明为 virtual,但派生类用 override 重写),说法正确的是:
class Instrument {
public:
void play() { cout << "乐器在演奏声音" << endl; } // 非 virtual
virtual ~Instrument() {}
};
class Piano : public Instrument {
void play() override { ... } // override 非虚函数 -> 编译错误
};
- A. 输出两行:钢琴:叮咚叮咚 和 吉他:咚咚当当
- B. 输出两行:乐器在演奏声音 和 乐器在演奏声音
- C. 代码编译出现错误
- D. 代码运行出现错误
正确答案:C