#include "stdafx.h"
// c++的三种继承方式
// 1.public 继承过来的成员属性不变
// 2.protected 继承过来的public属性变为protected,其他不变
// 3.private 继承过来的成员属性全部变为private
class A {
public :
int m_public;
protected :
int m_protected;
private :
int m_private;
};
class B : public A {
void setPublic(int n_public){
m_public = n_public;
}
void setProtected(int n_protected){
m_protected = n_protected;
}
void setPrivate(int n_private){
// m_private = n_private; // 基类私有,无访问权限
}
};
class C : protected A {
void setPublic(int n_public){
m_public = n_public;
}
void setProtected(int n_protected){
m_protected = n_protected;
}
void setPrivate(int n_private){
// m_private = n_private; // 基类私有,无访问权限
}
};
class D : private A {
void setPublic(int n_public){
m_public = n_public;
}
void setProtected(int n_protected){
m_protected = n_protected;
}
void setPrivate(int n_private){
// m_private = n_private; // 基类私有,无访问权限
}
};
class E : public D {
void setPublic(int n_public){
// m_public = n_public; // D私有继承A后m_public已变为私有,无访问权限
}
void setProtected(int n_protected){
// m_protected = n_protected;// D私有继承A后m_protected已变为私有,无访问权限
}
void setPrivate(int n_private){
// m_private = n_private; // 基类私有,无访问权限
}
};
class F : public C {
void setPublic(int n_public){
m_public = n_public;
}
void setProtected(int n_protected){
m_protected = n_protected;
}
void setPrivate(int n_private){
// m_private = n_private; // 基类私有,无访问权限
}
};
int main(){
B b;
b.m_public = 10;
// b.m_protected = 10; // 类外部不可使用
// b.m_private = 10; // 基类私有,无权访问
C c;
// c.m_public = 10; // 错误,protected继承A类里变成了protected成员(类外部无法访问)
// c.m_protected = 10; // 错误,protected继承A类里还是protected成员(类外部无法访问)
// c.m_private = 10; // 错误,在派生类中都不可以直接使用,在类外就更不能了
D d;
// d.m_public = 10; // 错误,private继承A类里变成了private成员
// d.m_protected = 10;// 错误,private继承A类里变成了private成员
// d.m_private = 10; // 错误,在派生类中都不可以直接使用,在类外就更不能了
return 0;
}
c++中三种继承方式
最新推荐文章于 2023-03-22 13:44:07 发布