虚基类及其派生构造函数与析构函数u
构造一个类的对象的一般顺序是:
(1):如果有直接或间接的虚基类,先执行虚基类的构造函数
(2):如果尤其它基类,则按照他们在继承声明列表中的出现次序,分别执行他们的构造函数,但构造过程中,不再执行虚基类的构造函数。
[csharp]
#include<iostream>
using namespace std;
class base0{
public: www.zzzyk.com
base0(int var):var0(var){cout<<"ggggg"<<endl;};
int var0;
void fun0(){cout<<"memory of base0"<<endl;}
~base0(){cout<<"gggg"<<endl;}
};
class base1:virtual public base0{
public:
base1(int var):base0(var){cout<<"hhhhh"<<endl;}
int var1;
~base1(){cout<<"HHHH"<<endl;}
};
class base2:virtual public base0{
public:
base2(int var):base0(var){cout<<"tttttt"<<endl;}
int var2;
};
class mm:public base1,public base2{
public:
mm(int var):base1(var),base0(var),base2(var){cout<<"ppppp"<<endl;}
int var;
void fun(){cout<<"member of mm"<<endl;}
~mm(){cout<<"ppppp"<<endl;}
};
int main(){
mm a(1);
a.var=2;
a.fun();
return 0;
}
补充:软件开发 , C# ,