class
{
};
没啥好解释的 访问权限和单一继承是一样的
派生方式 | 基类的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;
}
void SetX(int x) // 方法
{
xAxis=x;
}
void display() // 方法
{
cout<<"x坐标:"<<xAxis<<endl;
}
};
class CYAxis //定义X 坐标类
{
public:
int yAxis;
CYAxis(int y=0) //构造函数
{
yAxis=y;
}
void SetY(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;
}