代码
#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;
}
总结:上课迷迷糊糊糊的,看到程序有点蒙,看到结果就傻了。
在执行派生类的构造函数前必先执行父类的构造函数,若参数形式与其不符,则错误。
执行D构前,执行G构,构造执行完后,m=2;return 时,先执行D构,后执行G构。