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

45、子类需要重写父类的构造函数嘛,子类自己的构造函数呢?

45、子类需要重写父类的构造函数嘛,子类自己的构造函数呢?

一、子类是否需要重写父类的构造函数?

1. 不需要重写的场景

  • 基类有无参构造函数
    若父类(基类)显式或隐式定义了无参构造函数,子类无需重写构造函数即可直接实例化。例如:

    class Base {
    public:Base() {}  // 无参构造函数
    };
    class Derived : public Base {};  // 子类无需定义构造函数
    
  • 使用继承构造函数(C++特性)
    在C++11中,通过using Base::Base语法可直接继承父类的所有构造函数,无需手动重写:

    class Base {
    public:Base(int);Base(int, double);
    };
    class Derived : public Base {
    public:using Base::Base;  // 继承Base(int)和Base(int, double)
    };
    

2. 必须重写的场景

  • 基类没有无参构造函数
    若父类未定义无参构造函数且子类未使用继承构造函数,子类必须显式调用父类的有参构造函数:

    class Base {
    public:Base(int x) {}  // 仅定义有参构造函数
    };
    class Derived : public Base {
    public:Derived(int x) : Base(x) {}  // 必须显式调用父类构造函数
    };
    
  • 需要初始化子类新增成员
    若子类新增了需要初始化的成员变量,即使继承构造函数,仍需手动定义构造函数

二、子类重写父类构造函数后 是否需要单独定义自己的构造函数?

子类是否需要定义自己的构造函数,与其是否“重写”父类构造函数并无直接关联。具体是否需要定义子类构造函数,分以下两种情况:

  1. 子类必须定义构造函数的场景
    • 父类没有 无参构造函数,且子类未通过继承或其他方式复用父类构造函数。
    • 子类需要初始化自身 新增的成员变量或资源
    • 需要定制化构造逻辑(如参数校验、动态资源分配)。
  2. 无需定义构造函数的场景
    • 父类有无参构造函数,且子类无新增初始化需求
    • 子类通过继承语法(如C++的using Base::Base)直接复用父类构造函数。

核心:父类负责自身成员的初始化,子类负责新增成员的初始化。若子类未显式调用父类构造函数,可能导致父类成员未初始化。

http://www.xdnf.cn/news/1372.html

相关文章:

  • Git技术详解:从核心原理到实际应用
  • 示波器探头干扰致晶振停振的机理与工程对策
  • 三星One UI安全漏洞:剪贴板数据明文存储且永不过期
  • CSS清楚默认样式
  • APK安装失败,提示-13的错误
  • 解耦旧系统的利器:Java 中的适配器模式(Adapter Pattern)实战解析
  • CSS 选择器介绍
  • 【Java学习笔记】random的使用
  • 软件测试之功能测试详解
  • 从零到精通:探索GoFrame框架中gcron的定时任务之道 —— 优势、实践与踩坑经验
  • STM32F103 单片机(基于 ARM Cortex-M3 内核)的启动过程涉及硬件初始化、固件配置和程序执行流程。
  • 【计算机视觉】CV项目实战- Florence-SAM 多模态视觉目标检测+图像分割
  • Java_day30-35
  • 5.2.3 WPF 中 XAML 文件 Converter 使用介绍
  • 私有知识库 Coco AI 实战(三):摄入 Elasticsearch 官方文档
  • 安装jdk报错2503、2502--右键msi文件没法管理员权限执行(Windows解决方案)
  • 栈和队列学习记录
  • 图聚类中的亲和力传播
  • 国产三维CAD皇冠CAD在机械及汽车零部件设计建模教程:斜滑动轴承
  • Python内置函数---bin()
  • 书籍推荐:《认知觉醒》一周岭
  • 单片机获取真实时间的实现方法
  • Windows 各版本查找计算机 IP 地址指南
  • 在Notepad++中使用NppAtyle插件格式化代码
  • 正则表达式的捕获组
  • 众趣科技X世界读书日丨数字孪生技术赋能图书馆空间智慧化运营
  • TCP四大特性面试回答引导
  • UniOcc:自动驾驶占用预测和预报的统一基准
  • 【华为】防火墙双击热备-之-主备模式-单外网线路
  • MYSQL-库的基本操作