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

c++ 继承类的构造函数

在C++中,构造函数本身并不直接“继承”自基类。但是,当子类(派生类)继承自基类时,子类可以(并且通常必须)在其构造函数中调用基类的构造函数来初始化基类部分。

这里的关键是,子类构造函数不继承基类的构造函数,而是必须显式或隐式地调用它们以确保基类部分被正确初始化。如果基类有默认构造函数(即没有参数的构造函数),那么子类构造函数可以省略对基类构造函数的显式调用,编译器会自动插入对基类默认构造函数的调用。但是,如果基类没有默认构造函数,或者子类构造函数需要传递特定参数给基类构造函数,那么子类构造函数就必须在初始化列表中显式地调用基类构造函数。

例如:

class Base {
public:
    Base() { // 默认构造函数
        // 初始化代码
    }

    Base(int x) { // 带参数的构造函数
        // 使用x进行初始化
    }
};

class Derived : public Base {
public:
    Derived() : Base() { // 隐式调用Base的默认构造函数
        // Derived的初始化代码
    }

    Derived(int x, int y) : Base(x) { // 显式调用Base的带参数构造函数
        // 使用y进行Derived的初始化
    }
};

在这个例子中,Derived类继承自Base类。Derived有两个构造函数:一个默认构造函数和一个带两个参数的构造函数。在Derived的默认构造函数中,通过: Base()隐式地调用了Base的默认构造函数。在Derived的带两个参数的构造函数中,通过: Base(x)显式地调用了Base的带参数构造函数,并将x作为参数传递给它。

因此,虽然构造函数本身不继承,但子类构造函数必须负责调用基类构造函数来确保基类部分被正确初始化。

相关文章:

  • Self-Attention流程的代码实现【python】
  • 使用AWS Lambda轻松开启Amazon Rekognition之旅
  • 【STM32单片机_(HAL库)】3-2-3【中断EXTI】【电动车报警器项目】433M无线收发模块实验
  • 使用Virtio Driver实现一个计算阶乘的小程序——QEMU平台
  • Python-数据爬取(爬虫)
  • Ceph篇之利用shell脚本实现批量创建bucket桶
  • 《区块链与监管合规:在创新与规范之间寻求平衡》
  • 单片机大小端模式
  • 100个练习学习Rust!可变性・循环・溢出
  • Nuxt3【项目配置】nuxt.config.ts
  • Spring Cloud全解析:配置中心之springCloudConfig配置存储
  • leetcode 41-50(2024.08.19)
  • 嵌入式软件--模电基础 DAY 2
  • 手撕C++入门基础
  • PyTorch分布式训练全攻略:DistributedDataParallel精解与实战
  • 数据结构——单链表
  • (计算机网络)网络层
  • 【Unity教程】使用 Animation Rigging实现IK制作程序化的动画手臂跟随手自动移动等效果
  • JS DOM、点击事件
  • redis列表若干记录
  • 为什么所有动物里,只有人类幼崽发育得这么慢?
  • 五一上海楼市热闹开局:售楼处全员到岗,热门楼盘连续触发积分
  • 苏丹外交部:苏丹西部一城市约300名平民遭杀害
  • 成为中国骑手孵化器,上海环球马术冠军赛是最好的历练舞台
  • 谢震业领衔挑战世界顶尖高手,这场长三角田径钻石赛值得期待
  • 用小型核反应堆给数据中心供电,国内企业正在开展项目论证