C++多重继承
一个类可以从多个类继承,只需在类的基类列表中(即冒号后)指定更多的基类,用逗号分隔即可。例如,如果程序有一个名为Output的特定类要在屏幕上打印,我们希望派生类Rectangle(长方形)和Triangle(三角形),除了继承基类Polygon(多边形)的成员外,还继承基类Output(输出),我们可以这样写:
class Rectangle: public Polygon, public Output;
class Triangle: public Polygon, public Output;
实例代码
源代码,仔细看注释内容:
D:\YcjWork\CppTour>vim c2005.cpp
#include <iostream>using namespace std;
/*** 类的多重继承
*/
class Polygon{ //定义一个基类Polygonprotected: //定义保护权限的成员,以便派生类继承int width, height;public:void set_value(int w, int h){width = w;height = h;}
};class Output{ //定义一个基类Outputpublic:static void print(int);
};void Output::print(int i){cout << i ;
}class Rectangle: public Polygon, public Output{ //从两个类中继承,定义派生类Rectanglepublic:int area(){return width*height;}
};class Triangle: public Polygon, public Output{ //从两个类中继承,定义派生类Trianglepublic:int area(){return width*height/2;}
};int main(){Rectangle rect;Triangle trgl;rect.set_value(4,5); //调用基类Polygon的set_value()方法trgl.set_value(4,5); //调用基类Polygon的set_value()方法rect.print(1); //调用基类Output的print()方法cout << ": " << rect.area() << endl; //调用派生类的方法area()trgl.print(2); //调用基类Output的print()方法cout << ": "<< trgl.area() << endl; //调用派生类的方法area()return 0;
}
编译运行
D:\YcjWork\CppTour>gpp c2005D:\YcjWork\CppTour>g++ c2005.cpp -o c2005.exeD:\YcjWork\CppTour>c2005
1: 20
2: 10D:\YcjWork\CppTour>
运行截屏
(全文完)