C++虚函数(2)

class x {
      char *p;
public:
      x(int sz) {p=new char[sz];}
      virtual  ~x(){cout << "~x()\n"; delete []p;}
};
class y : public x {
      char *pp;
public:
      y(int sz1, int sz2) : x(sz1){pp=new char[sz2];}
      ~y(){cout << "~y()\n"; delete []pp;}
};
void main(){
x*  px=new y (10,20);
delete px;
}

 

 

 

 

 

class 派生类名: virtual 继承方式 基类名

 

class A  //声明基类A
 {…};
class B :virtual public A  //声明类B是类A的公用派生类,A是B的虚基类
 {…};
class C :virtual public A  //声明类C是类A的公用派生类,A是C的虚基类
 {…};

 

 

class A    //定义基类A
 {A(int i){ }       //基类构造函数,有一个参数
…};
class B :virtual public A  //A作为B的虚基类
 {B(int n):A(n){ }  //B类构造函数,在初始化表中对虚基类初始化
…};
class C :virtual public A   //A作为C的虚基类
 {C(int n):A(n){ }   //C类构造函数,在初始化表中对虚基类初始化
…};
class D :public B,public C//类D的构造函数,在初始化表中对所有基类初始化
 {D(int n):A(n),B(n),C(n){ }
…};

 

猜你喜欢

转载自blog.csdn.net/qq_26896213/article/details/83996719