继承方式的不同,成员变量在子类中的权限不同
继承方式 | public | protected | private |
public | public | protected | private |
protected | protected | proteced | private |
private | private | private | private |
1、子类拥有父类中所有成员变量和成员函数
2、子类就是一种特殊的父类
3、子类对象可以当做父类对象使用
4、子类也可以拥有父类没有的方法和属性
赋值兼容性原则
1、子类对象可以当做父类对象使用
2、子类对象可以直接赋值给父类对象
3、子类对象可以直接初始化父类对象
4、父类指针可以直接指向子类对象
5、父类引用可以直接引用子类对象
namespace three {
class Parent {
public:
void printP() {
printf("i am father\n");
}
protected:
int a;
int b;
};
class Child :public Parent {
public:
Child() {
a = 0;
b = 0;
c = 0;
}
void printC() {
printf("i am son\n");
}
protected:
private:
int c;
};
void howToPrint(Parent *p) {
p->