#include<iostream> using namespace std; class MyClassB { public: virtual void m1() = 0; virtual void m2() = 0; }; class DerivedC :public MyClassB { public: virtual void m1() {} }; int main() { DerivedC d; d.m1(); return 0; }指出错误说明原因
时间: 2023-12-15 16:29:07 浏览: 58
使用include <iostream>时一定要加using namespace std
在这个代码中,存在一个错误:在 `main` 函数中创建的 `DerivedC` 对象无法实例化,因为它是一个抽象类 `MyClassB` 的子类,而抽象类不能被实例化。抽象类是指含有纯虚函数的类,纯虚函数是指在类中没有实现的虚函数,需要子类进行实现。在这个例子中,`MyClassB` 中的两个函数 `m1()` 和 `m2()` 都是纯虚函数,因此 `MyClassB` 是一个抽象类。而 `DerivedC` 只实现了 `m1()` 函数,没有实现 `m2()` 函数,因此它仍然是一个抽象类。因此,无法创建 `DerivedC` 类的实例。要想创建 `DerivedC` 类的实例,需要在 `DerivedC` 中实现 `MyClassB` 中的所有纯虚函数。
阅读全文