类的继承:
类的继承分三种方式:公有 私有 保护, 若不明确指出默认私有继承;
类的继承主要干三件事情:接收基类成员,改造基类成员,添加新的成员
关于接收基类成员:接收基类所有的数据成员,接收基类所有的函数成员,除了构造函数,析构函数,为什么呢?前面说过:构造,析构函数都是给编译器看的,编译器本身可以看到基类的构造析构函数,所以对于派生类的构造函数,编译器是一层一层的调用,先调用基类再调用子类的构造函数,析构则相反;
关于改造基类成员:这里主要有一个覆盖的问题,当派生类重新定义一个跟基类成员函数(返回值,参数,函数名)一模一样的函数时候,对于派生类对象而言会覆盖基类同名的成员函数
关于添加新的成员:略,派生类添加了新的数据成员,自然要添加新的成员函数对新数据成员进行处理;
对于公有继承,只有基类的私有成员不可访问,要访问他们需要通过父类的接口,其余成员访问属性不变;
对于私有继承,除了基类的私有成员不可访问外,父类的公有成员保护成员都变为私有,这意味着若再次继承,不论采用何种方式,其二代子类都不能直接访问爷爷类的数据成员;
对于保护继承,对于类内成员函数而言,与公有继承无差异,但是其二代子类,不论采用何种继承方式,都能直接访问爷爷类的(非私有)数据成员;
儿子可以直接访问其父类的公有与保护成员,却不能访问私有成员; (若要访问可以通过接口);
友元函数可以直接访问对应类的公有与私有成员,却不能访问保护成员;(若要访问可以通过接口);
通过对象只能直接访问该类的公有成员,公有成员是类的对外接口,名片;