类的继承
前言
我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。
1 | class<派生类名>:<继承方式><基类名>{ |
正文
1 | class father{ |
像这种其实有共同属性的时候,就可以通过继承。
- 子类不能继承父类的构造函数、析构函数、重载赋值运算符
- 子类只能继承父类的成员变量以及常规成员函数
1 | class father{ |
如何看是否继承了,最简单的就是看两个类的内存大小。
看到father 20没问题,son是28?
从结构上看就只有俩成员int和float加在一起也是8,多余的20自然是从父类那边继承过来的。
1 | class grandson : public son{ |
再添加一个类继承son,看看内存变化
结果是32,又多了一个4,这个4自然就是自带的属性sex。
public继承,就只能继承到public下的成员
1 | class father{ |
当son的成员变成私有的时候,由grandson构造的类对象就无法访问到其中的属性了
1 | class son: public father{ |
1 | class father{ |
私有的成员虽然继承之后不可访问,但是同样会占用内存。
引出一个新的属性,protected
,
它的作用在类中其实跟私有差不多,但是可以被类本身和友元函数调用。
当然最主要的是他可以被继承,只不过比较特别
只能通过派生类或者说子类的成员函数中访问。
protected又称受保护的:
- 可访问的范围比私有的大一点
- 除了基类就只能在派生类的成员函数中访问
final
当类加了final
修饰后,他就不能作为基类使用了。
而且final比较有意思的这个关键字可以做变量名,他没有那么严格要求
结语
过一遍继承属性,这个还没区分当不是public继承基类的时候的区别。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Box'Blog!
评论