C++的多重继承

来源:互联网 发布:大数据对餐饮业 编辑:程序博客网 时间:2024/04/30 05:00

class 派生类名: 访问控制关键字基类名1, 访问控制关键字 基类名2,...
{
  数据成员和成员函数声明
};

没啥好解释的   访问权限和单一继承是一样的

派生方式基类的public成员基类的protected成员基类的private成员派生方式引起的访问属性变化概括private派生变为private成员变为private成员不可见基类中的非私有成员都成为派生类中的私有成员protected派生变为protected成员变为private成员不可见基类中的非私有成员在派生类中的访问属性都降一级public派生仍为public成员仍为protected成员不可见基类中的非私有成员在派生类中的访问属性保持不变

 测试代码

#include<iostream>using namespace std;class  CXAxis //定义X 坐标类{public:int  xAxis;  CXAxis(int x=0)   //构造函数{xAxis=x;}   voidSetX(int x)      // 方法{        xAxis=x;}   void display()  // 方法   {   cout<<"x坐标:"<<xAxis<<endl;   }};class CYAxis   //定义X 坐标类{ public:int yAxis;CYAxis(int y=0)   //构造函数{yAxis=y;}voidSetY(int y)      // 方法{        yAxis=y;}void display()    // 方法   这里定义成重名的 为了说明二义性的问题{cout<<"y坐标:"<<yAxis<<endl;}};class CMyPoint:public CXAxis,public CYAxis{  public:CMyPoint(int x=20 ,int y=20):CXAxis(x),CYAxis(y)  //构造函数{         xAxis=x; yAxis=y;}   void SetPoint(int x,int y)    // 方法   {     CXAxis::SetX(x);   CYAxis::SetY(y);}void displayPoint()     {CXAxis::display();CYAxis::display();}};int main(){   cout<<"类的多重继承演示"<<endl;   CMyPoint P(10,20);   P.displayPoint();//显示时间日期      cout<<"二义性测试"<<endl;     // P.display();  //ambiguous   P.CXAxis::display();   P.CXAxis::display();         cout<<"继承的函数测试"<<endl;   P.SetX(200); //无同名的可以公有CXAxis 类的SetX   P.SetY(20);   P.displayPoint();//显示时间日期      return 0;}


 

原创粉丝点击