#include<iostream>
using namespace std;
class Base{
public:
Base(){cout<<"consttruct in Base\n";}
~Base(){cout<<"destructing Base"<<endl;}
};
class SubClass : public Base{
public:
SubClass(){cout<<"construct in SubClass\n";}
~SubClass(){cout<<"destructing SubClass"<<endl;}
};
void main(){
cout<<"first:\n";
Base bs;
cout<<"second:\n";
SubClass sc;
cout<<"end!\n";
}
结果显示:
first:
consttruct in Base
second:
consttruct in Base
construct in SubClass //先调用基类构造函数,再调用派生类构造函数
end!
destructing SubClass
destructing Base //先调用派生类析构函数,再调用基类析构函数
destructing Base
然后在堆中new出两个对象,类的定义如上,main()函数如下:
void mian(){
cout<<"first:\n";
Base *bs = new Base;
cout<<"second:\n";
SubClass *sc = new SubClass;
cout<<"end!\n";
}
运行结果显示:
first:
construct in Base
second:
construct in Base
construct in SubClass