问题及代码:
#include<iostream>
using namespace std;
class G
{
public:
static int m;
G( ) //构造函数
{
m++;
cout<<"G begins\n";
}
~G( )
{
cout<<"G ends\n";
m--;
}
};
int G::m=0;
class D:public G
{
public:
D( ) //构造函数
{
m++;
cout<<"D begins\n";
}
~D( )
{
cout<<"D ends\n" ;
m-- ;
}
};
int main( )
{
D objg;
cout<<G::m<<endl;
return 0;
}
运行结果:
知识点总结:
继承与派生
学习心得:
/*
建立一个objg的对象,执行构造函数,先基类 cout<<"G begins\n"; m+1=1
再派生类 cout<<"D begins\n"; m+1=2;
cout<<G::m; 即cout<<"2";
return 调用析构函数,先执行派生类 cout<<"D ends\n" ; m-1=1;
再基类 cout<<"G ends\n"; m-1=0;
*/