当前位置: 首页 > news >正文

C++类的继承和派生

一、继承基本概念

  1. 继承机制:通过已有类(基类/父类)创建新类(派生类/子类),实现代码重用和扩展

  2. 继承关系:
    • 基类 → 提供基础功能

    • 派生类 → 继承基类成员 + 新增特有成员

  3. 继承优势:
    • 减少代码冗余

    • 提高开发效率

    • 增强程序扩展性

二、继承类型

  1. 单继承:仅从一个基类派生
    class Derived : public Base { ... };
    
  2. 多继承:从多个基类派生
    class Derived : public Base1, protected Base2 { ... };
    

三、访问控制与继承方式

继承方式基类public成员基类protected成员基类private成员
publicpublicprotected不可访问
protectedprotectedprotected不可访问
privateprivateprivate不可访问

四、构造与析构机制

  1. 执行顺序:
    • 构造函数:基类 → 成员对象 → 派生类

    • 析构函数:派生类 → 成员对象 → 基类

  2. 派生类构造函数格式:

    Derived(参数表) : Base1(参数), Base2(参数), 成员对象(参数) { ... }
    

五、多继承的挑战与解决方案

  1. 二义性问题:
    • 表现:多个基类存在同名成员

    • 解决方案:

    对象.基类名::成员 // 显式指定作用域
    
  2. 菱形继承问题:
    • 表现:派生类包含重复基类成员

    • 解决方案:虚继承(virtual inheritance)

    class B : virtual public A { ... };
    class C : virtual public A { ... };
    class D : public B, public C { ... };
    

六、特殊继承技术

  1. 虚基类特性:
    • 确保派生类只保留一份基类副本

    • 最终派生类需直接调用虚基类构造函数

  2. 抽象类:
    • 包含纯虚函数的类(virtual void func() = 0;)

    • 不可实例化,用于接口定义

七、类型兼容规则

  1. 派生类对象可赋值给基类对象
  2. 基类指针/引用可指向派生类对象
    Base* p = new Derived();
    

八、设计实践要点

  1. 优先使用public继承(符合IS-A关系)
  2. 谨慎使用多继承,优先组合代替继承
  3. 虚函数与继承结合实现运行时多态
  4. 遵循"基类析构函数应为虚函数"原则

示例问题解决方案:
原Student和CollegeStudent类可通过继承优化:

class Student {
public:void display() { /* 显示num和name */ }
protected:int num;string name;
};class CollegeStudent : public Student {
public:void display() { Student::display();  // 重用基类方法cout << speciality;  // 新增特性}
private:string speciality;
};

通过继承复用num和name成员,避免代码重复,符合面向对象设计原则。

相关文章:

  • 计算机组成原理———CPU指令周期精讲
  • Java静态变量笔记
  • 并发笔记-并发问题与事件驱动模型(五)
  • Spring Bean有哪几种配置方式?
  • Nacos源码—8.Nacos升级gRPC分析五
  • neptune系统详解
  • mysql dump 导入导出用法
  • js 画立方体软件开发日记2
  • MySQL——性能调优
  • 面试题:C++虚函数可以是内联函数吗?
  • 嵌入式学习笔记 - MSB, LSB
  • 策 略 模 式
  • 马铃薯土豆幼苗与杂草检测数据集VOC+YOLO格式3051张2类别
  • cursor 如何在项目内自动创建规则
  • CSDN博客粘贴图片失败如何解决
  • 网络编程epoll和udp
  • 联想 SR550 服务器,配置 RAID 5教程!
  • CSRF记录
  • Megatron系列——张量并行
  • Clang实现C++文件分析,含Python实战
  • Manus向全球用户开放注册
  • 中医的千年传承:网络科学描绘其演化之路|PNAS速递
  • 郎朗也来了,在辰山植物园“轻松听古典”
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理
  • 婚姻登记“全国通办”首日,上海虹口登记中心迎来“甜蜜高峰”
  • 云南省安委会办公室:大理州安全生产形势比较严峻,事故总量一直居高不下