指出错误1分,说明原因2分 #include<iostream> using namespace std; class MyClassB {public: virtual void mi() = 0; virtual void m2() = 0; class Derived : public MyClassB {public: virtual void mi0 f int main() DerivedC d; d.m10); return
时间: 2024-04-07 18:29:28 浏览: 59
错误:代码中缺少了一对大括号,并且Derived类没有实现MyClassB中的纯虚函数。
原因:在代码中,MyClassB中的纯虚函数mi()和m2()没有被Derived类实现,导致Derived类也变成了抽象类,无法被实例化。此外,在Derived类的实现中,mi()函数的定义中缺少了一个左括号。最后,在main函数中,d对象调用的是m1函数,但实际上应该是mi函数。
相关问题
#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; }指出错误并说明原因
在此代码中,DerivedC类继承了MyClassB类并实现了其中的m1()方法,但是它没有实现m2()方法,这导致MyClassB类成为了一个抽象类,无法实例化。在main()函数中,DerivedC类被实例化了,但是它并没有实现MyClassB类中的所有纯虚函数,因此编译器会报错。正确的做法是在DerivedC类中实现MyClassB类中所有的纯虚函数或者将DerivedC类也声明为抽象类。
阅读全文