当前位置:编程学习 > C#/ASP.NET >>

虚基类及其派生构造函数与析构函数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# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,