一、public继承
通俗的说就是父类的public和protected的成员到了子类,就属于子类的public和protected的权限(这里的权限是其他类或外部函数对子类中成员的访问权限,而不是子类对父类的访问权限),子类对父类的private无访问权限。
二、protected继承
父类的public和protected的成员到了子类,都变成属于子类的protected的权限,子类对父类的private无访问权限。
三、private继承
父类的public和protected的成员到了子类,就属于子类的private权限,子类对父类的private无访问权限。
举个例子:
class A{
public:
int Aa;
protected:
int Ab;
private:
int Ac;
};
class B: private A{
public:
int Ba;
void dis(){
Aa = 10; //编译通过
Ab = 20; //编译通过
Ac = 30; //编译报错,Ac是A的私有成员,无访问权限
}
protected:
int Bb;
private:
int Bc;
};
class C:public B{
public:
int Ca;
void dis(){
Aa = 10; //编译报错,此时C对Aa的访问权限变成private
Ab = 20; //编译报错,此时C对Ab的访问权限变成private
Ac = 30; //编译报错,此时C对Ac的访问权限变成private
}
protected:
int Cb;
private:
int Cc;
};
B private继承A, C public 继承B。
四、成员访问权限的目的
public成员: 提供公共接口
protected成员: 传承数据
private成员: 隐藏数据
五、继承权限
public继承:提供公共接口并传承数据(public还是public,protected还是protected)
protected继承:传承数据(public和protected都变成protected)
private继承:隐藏数据也不提供接口(public和protected都变成private)
六、继承方式选择
一般情况下都会选择public,让持续提供接口并传递数据,个别情况下才会使用protected和private的继承方式。
class 类名{
public:
一般常见接口;
protected:
常见接口;
高效接口;
private:
特效接口;
};
也就是说这种事用于公司出不能版本的产品,已针对不同类型的用户,比如家庭版,企业版。
本文详细解析了 C++ 中 public、protected 和 private 三种继承方式的特点及应用场景,并通过示例说明了不同继承方式下成员访问权限的变化。
4699

被折叠的 条评论
为什么被折叠?



