C++支持一个类继承多个类
例如
class CRectangle: public CPolygon, public COutput;
class CTriangle: public CPolygon, public COutput;
注意:
1.调用构造函数按照从左到右的顺序(
CPolygon,
COutput,CRectangle(本身)
)。
2、调用析构函数按照从右到左的顺序(~CRectangle(本身),~COutput,~CPolygon)。
class CPolygon {
protected:
int width, height;
public:
CPolygon(){cout<<"CPolygon"<<endl;}
~CPolygon(){cout<<"~CPolygon"<<endl;}
void set_values (int a, int b)
{ width=a; height=b;}
};
class COutput {
public:
COutput(){cout<<"COutput"<<endl;}
~COutput(){cout<<"~COutput"<<endl;}
void output (int i);
};
void COutput::output (int i) {
cout << i << endl;
}
class CRectangle: public CPolygon, public COutput {
public:
CRectangle(){cout<<"CRectangle"<<endl;}
~CRectangle(){cout<<"~CRectangle"<<endl;}
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon, public COutput {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
//CTriangle trgl;
rect.set_values (4,5);
//trgl.set_values (4,5);
rect.output (rect.area());
//trgl.output (trgl.area());
return 0;
}