C++作为一门面向对象的语言,其核心便是它的三大特性:封装,继承和多态。
而其中,继承这一特性的存在最主要的目的是为了实现代码的复用,即当你在构建多个类的时候,你发现它们之间有相当一部分的功能和属性是相同,这时你就可以通过继承这一特性来进行代码的复用,将重复的部分作为公共部分来使用,从而不必在构建每一个类的时候都将相同的部分在写一遍。
继承的定义格式:
继承方式与访问限定符之间的关系:
1.公有继承public:对于公有继承而言,基类中该成员是被哪种访问限定符所修饰的,那么在派生类中依旧是被这种访问限定符所修饰的,对于成员的访问权限并未做任何修改
2.保护继承protected:对于保护继承而言,除了将基类当中被public访问限定符所修饰的成员变成以protected所修饰的以外,对于其他访问限定符所修饰的成员,并不改变他们的访问权限。
3.私有继承private:对于私有继承而言,要将基类当中被public以及protected修饰的成员均变成以private所修饰的,原本以private修饰的不做改动。
综上,根据上述继承方式有以下几个注意点:
1.对于三种继承方式来说,基类中public,protected对应的成员,在派生类中均可进行访问,而对于private成员,虽说一样是被继承下来了,但由于private访问权限,不能在类外被访问,由此,我们可以清楚的看到protected与private这两个访问限定符之间的区别在于能否在派生类中被访问。
2.对于三种继承方式下来的派生类的对象,除了public继承能访问基类中public修饰的成员以外,派生类的对象是无法访问基类中的成员的。
3.使用class关键字时,默认的继承方式为private,而以struct为关键字时,默认的继承方式是public
继承机制下构造函数与析构函数的调用:
构造函数:
构造派生类对象:a.调用派生类的构造函数;b.在派生类构造函数初始化列表