编译错误。在类B的构造函数中,缺少一个左括号,而在类A的定义中,构造函数和析构函数的定义不对齐。修正后的代码如下:

#include using namespace std; class A{ public: A(){ cout<<"A::A() called.\n";} virtual ~A(){ cout<<"A::~A() called.\n";} }; class B:public A{ public: B(int i){ buf=new char[i]; cout<<"B::B() called.\n";} virtual ~B(){ delete []buf; cout<<"B::~B() called.\n"; A *p=new B(15); fun(p); } private: char buf;}; void fun(Aa){ cout<<"May you succeed!"<<endl;} int main(){ A *a=new B(10); delete a; return 0; }

#include iostream using namespace std; class ApublicA coutAA calledn;virtual ~A coutA~A calledn;;public Bint i class Bpublic A buf=new char; coutBB calledn; int main delete a; void funAa coutMay you s

原文地址: http://www.cveoy.top/t/topic/cyiz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录