c++继承篇(is a,public protected private)

1.隐藏 派生类中定义和基类中一样的成员变量或成员函数

结果是: 派生类对象直接调用的是派生类里面的成员,基类的成员被隐藏

要想通过派生类对象调用基类成员也可以,在成员前面加上类名:: soldier.Person::eat();

2.is a

派生类对象可以给基类对象赋值,或函数形参时,本来应该传基类对象,传派生类对象也行。派生类比基类多的成员自动丢弃,其他赋值。

不管继承了多少次,只要存在继承关系的(包括间接),派生类和基类都是is a的关系

3.多重继承和多继承

4.虚继承

继承前面加virtual 菱形继承中避免间接继承两次的基类后,有两份基类成员,造成数据冗余

不加virtual的话就有两份数据,加的话只有一份,且不能通过虚继承的类改变基类成员的值。

5

1.如果子类从父类继承时使用的继承限定符是public,那么

(1)父类的public成员成为子类的public成员,允许类以外的代码访问这些成员;

(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;

(3)父类的protected成员成为子类的protected成员,只允许子类成员访问;

2.如果子类从父类继承时使用的继承限定符是private,那么

(1)父类的public成员成为子类的private成员,只允许子类成员访问;

(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;

(3)父类的protected成员成为子类的private成员,只允许子类成员访问;

3.如果子类从父类继承时使用的继承限定符是protected,那么

(1)父类的public成员成为子类的protected成员,只允许子类成员访问;

(2)父类的private成员仍旧是父类的private成员,子类成员不可以访问这些成员;

(3)父类的public成员成为子类的protected成员,只允许子类成员访问;

public protected private限定符:

public内部直接用,外部可以调用

protected内部直接用,外部不能用,子类可以直接用

private 内部直接用,外部和子类不能用

猜你喜欢

转载自blog.csdn.net/sinat_41852207/article/details/86675265