假设我们有一个对象person,里面的成员变量有个整型age,再创建一个对象student,成员变量是char类型的_name。
继承的意思就是在person的基础上,再添加其他的成员,不改变person的成员变量,在一个新的对象里,不仅包含了person的成员,也加上自己的成员变量,从而达到继承的效果。
这里的person对象称之为“父类”,而student称之为“子类”。
我们可以理解为,儿子继承了爸爸的财产,再发扬光大,获得了爸爸没有的东西,当然,儿子也可以在某一地方选择低调,拥有而不显示。
想要做到继承,只需要在子类后加上“:+ public + 父类”即可,在初始化期间,自定义成员调用自己的构造函数,且在子类自定义析构时,不需要手动调用父类的析构函数,编译器为了保持后进先出的原则,在子类调用完析构函数后,会自己调用父类的析构函数。
继承的权限方面,一个类有3种,public继承、protected继承和private继承。
所以父子类一共有9种:
子类 | public | protected | private
父类
public | 子类public | protected | private
protected | protected | protected | private
private | 不可见 | 不可见 | 不可见
简单一点理解为,与const的权限类似,只能缩小不能放大,也就是public > protected > private,父类是私有的,子类也看不到,但是存在。
还有友元问题,在父类上友元了,子类上可以调用吗?答案是不可以的,就好比,爸爸的兄弟,儿子不可能也称兄道弟吧。
所以无法调用,如果真的想要调用呢,那就让爸爸的兄弟和你做兄弟,在子类上也友元了,这样才能调用。
当然,还有多继承以及虚拟继承的问题,咱们下次再讲。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)