1.0 C++远征:为什么继承

2-1为什么继承

1.Worker继承自Person,新增方法work()和成员m_iSalary:

// 继承
class Worker : public Person
{
public:
	void work();
    int m_iSalary;
}

2.继承方式

(1)公有继承

class A : public B

Tips:
可以通过本类中的public下的成员函数访问protected和private中的数据成员;
不涉及继承的时候protected和private是一样的;
公有继承的时候,原类中的public放到新类的public中,原类的protected放到新类的protected中,而原类的privat将会放到新类的不可见位置,是禁止访问的;
在公有继承中:基类的Proteced类似于非继承形式下的private。 可以通过成员函数进行调用Protected中的数据成员。基类中的Private不会继承到派生类的Private下。注意:他继承到了一个隐藏的地方。即派生类不能访问基类的Private。
Table:
基类成员访问属性 继承方式 派生类成员访问属性
private成员 public 无法访问
protected成员 public protected
public成员 public public

(2)保护继承

class A : protectd B

Tips:
保护继承的时候,基类中的protected和public都将作为派生类的protected,基类中的private将会在派生类中不可见,无法访问
Table:
基类成员访问属性 继承方式 派生类成员访问属性
private成员 protected 无法访问
protected成员 protected protected
public成员 protected protected

(3)私有继承

class A : private B

Tips:
私有继承的时候,基类中的protected和public都将作为派生类的private,基类中的private将会在派生类中不可见,无法访问
私有继承是has a(是一种包含关系)
Table:
基类成员访问属性 继承方式 派生类成员访问属性
private成员 private 无法访问
protected成员 private private
public成员 private private
原文地址:https://www.cnblogs.com/xiaoqingyang/p/6076963.html