类的继承
- 类可以继承class或struct:
- 继承class时,默认继承方式是private
- 继承struct时,默认继承方式是public
- 继承方式(private成员是无法被继承的):
- public继承:继承了父类的public和protected成员,并保留的可见性
- protected继承:继承了父类的public和protected成员,并将他们的可见性改为protected
- private继承:继承了父类的public和protected成员,并将他们的可见性改为private
用表格的方式更加直观
继承方式\成员可见性 | public | protected | private |
public | public | protected | 无法继承 |
protected | protected | protected | 无法继承 |
private | private | private | 无法继承 |
【注意】
- 子类能访问父类的protected成员,如:
class Base { protected: void test(); }; class Derive : public Base //继承方式随意 { public: void testPro() { Base::test(); //此处可以调用父类的protected成员 } };
- 只有通过public继承的方式,产生的派生类才能转换为基类
Derive derive; Base * base = &derive; //如果派生的时候用的是protected或者private方式,会报错,因为这样派生的类,其成员的可访问性和基类不一样了