C++ | 继承

本文深入解析C++继承的原理与应用,包括代码复用、内存布局、构造与析构顺序、继承方式、类关系及函数关系等内容,帮助读者全面掌握C++继承特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

继承作为C++三大特性之一,有着举足轻重的地位。

下面是关于继承的一些知识点,可以帮助我们更好地学习和理解继承!!

1. 继承的本质:代码复用   

2. 继承和派生

 

3. 派生类继承了基类的什么?

 派生类继承了基类除构造函数和析构函数以外的所有成员 

4. 派生类的内存布局

如下图,base为基类,derive为派生类,派生类的内存布局如右边图形所示:

  • 在命令界面查看C++类的内存布局:

       命令格式如下:

       cl –d1reportSingleClassLayout[classname] xxx.cpp

       classname 为类名,xxx.cpp为源代码文件名

  • 派生对象的生成过程:

     (1)开辟内存 < 基类 + 派生类总内存 > 

     (2)对内存空间初始化:

                                          ① 系统调用基类构造函数(为默认的构造函数,因为基类的构造函数未被继承)

                                          ② 系统调用派生类的构造函数 (优先构造基类)    

5. 派生类的构造和析构顺序

(1)基类的构造优先级 >  派生类

        首先调用基类的构造,再调用派生类的构造

(2)类的析构优先级 <  派生类

        首先调用派生类的析构,再调用基类的析构

6. 继承方式

(1)继承方式

         public     protected     private

(2)访问限定符:   
          public:        在任意位置可见
          protected:    在本类类中和子类中可见
          private:    在本类类中访问

(3)基类不同的访问限定符成员不同的继承方式继承,在派生类中的访问限定

基类

/继承方式

publicprotectedprivate
publicpublicprotected不可访问
protectedprotectedprotected不可访问
privateprivateprivate不可访问

7. 类和类关系   

(1)组合关系    a  part of    has_a      <私有继承>

(2)继承关系    a kind of   is_a           <公有继承(保护继承)> 

(3)代理关系     容器适配器  

8. 同名函数的关系 

关系介绍特点
重载(overload)有相同的名称,但是参数列表不相同,即函数重定义

重载三要素:

① 同名

② 不同参

③ 同作用域

隐藏(overhide)派生类中同名的函数隐藏了基类所有同名的函数 ① 继承  不同作用域
② 同名  
覆盖(override)派生类中同名同参的虚函数覆盖了基类中同名同参的虚函数,即重写

① 继承  不同作用域

② 虚函数
③ 同名 同参  

9. 基类和派生类指针或引用的相互关系

(1)允许基类的指针或者引用指向或者引用派生类对象

(2)不允许派生类的指针或者引用指向或者引用基类对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值