逐行分析下列程序,并显示结果:#include <iostream.h> class BASE{ int m_base; public: BASE( int m_b=0 ) { m_base=m_b; cout<<"BASE Constructor! m_base="<<m_base<<endl; } virtual void f(){ cout<<"BASE::f() called!"<<endl; } virtual ~BASE(){ cout<<"BASE Destructor!"<<endl; } }; class DERIVE: public BASE{ int m_derive; public: DERIVE ( int a, int b=1 ):BASE(a) { m_derive=b; cout<<"DERIVE Constructor! m_derive="<<b<<endl; } void f( ) { cout<<"DERIVEL::f() called!"<<endl; } ~DERIVE() { cout<<"DERIVE Destructor!"<<endl; } }; void main() { BASE b[2]; b[0].f(); BASE *pb = new DERIVE(2,3); pb->f(); delete pb; }
时间: 2023-06-18 16:07:34 浏览: 93
#include"iostream.h"
3星 · 编辑精心推荐
这是一个 C++ 程序,包含两个类:BASE 和 DERIVE。
程序的主函数 main() 中定义了一个 BASE 类的数组 b,数组长度为 2,并依次调用了两个 BASE 类的构造函数 BASE()。然后调用了数组 b 的第一个元素的 f() 函数,输出 BASE::f() called!。
接下来,定义了一个指向基类 BASE 的指针 pb,并使用 new 运算符在堆上创建了一个 DERIVE 对象,构造函数 DERIVE() 中调用了基类 BASE 的构造函数 BASE(),并输出了 BASE Constructor! m_base=2 和 DERIVE Constructor! m_derive=3。
接着,通过指针 pb 调用了 DERIVE 类的 f() 函数,输出 DERIVEL::f() called!。
最后,使用 delete 运算符释放了 pb 所指向的内存,并在 DERIVE 类的析构函数 DERIVE::~DERIVE() 中输出了 DERIVE Destructor! 和 BASE Destructor!。
程序的输出结果如下:
BASE Constructor! m_base=0
BASE Constructor! m_base=0
BASE::f() called!
BASE Constructor! m_base=2
DERIVE Constructor! m_derive=3
DERIVEL::f() called!
DERIVE Destructor!
BASE Destructor!
BASE Destructor!
阅读全文