c++学习记录(十四)

继承和派生

又开启了新的篇章

  • 可重用性:原先一段代码可实现某功能,后来要再实现该功能时,只需把这段代码贴上去即可
  • 继承:在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类
  • 派生类:是通过对基类进行修改和扩充得到的,在派生类中,可以扩充新的成员变量和成员函数
  • 修改是指比如新定义的成员函数名与基类中的某个成员函数相同,但进行的操作不一样
  • 派生类一经定义后,可以独立使用,不依赖于基类
  • 派生类拥有基类的全部成员函数和成员,无论是private,protected,public
  • 在派生类的各个成员函数中,不能访问继承自基类的private成员

- 派生类的写法

class 派生类名:public 基类名
{
    ...
};

- 派生类对象的内存空间

  • 派生类对象的体积等于基类对象的体积再加上派生类对象自己的成员变量的体积,在派生类对象中包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员变量之前
  • 例如
class CBase
{
    int v1,v2;
};
class CDrived:pulic CBase
{
    int v3;
};
  • 则CBase占8个字节,CDrived占12个字节存储,顺序如下
CDrived v1 CBase
CDrived v2 CBase
CDrived v3

继承关系和复合关系

- 类之间的两种关系

  • 继承:“是”关系
    • 基类A,B是基类A的派生类
    • 逻辑上要求:“一个B对象也是一个A 对象”
    • 就像中学生从学生中派生,中学生也是学生
  • 复合:“有”关系
    • 类C中“有”成员变量k,k是类D的对象,则C和D是复合关系
    • 一般逻辑上要求:“D对象是C对象的固有属性或组成部分”

猜你喜欢

转载自www.cnblogs.com/2002ljy/p/12291042.html