讲师中心 微信公众号
AI工具推荐 视频效率加速

c++如何实现类的继承_c++子类继承父类方法【实战】

胖晨吖_2623

胖晨吖_2623

发布时间:2026-03-09 13:52:03

|

514人浏览过

|

来源于php中文网

原创

C++子类默认继承父类public成员函数,但private不继承、protected仅限类内调用;继承须用public方式,析构函数需virtual以防资源泄漏;子类可显式调用Base::func()扩展逻辑,同名函数会隐藏而非重载,需using引入或override确保正确覆盖。

c++如何实现类的继承_c++子类继承父类方法【实战】

子类定义时怎么写才能真正继承父类方法

不加任何修饰,C++ 子类默认就继承 public 成员函数——但仅限访问权限允许的那些。关键不是“能不能写”,而是“能不能用”。private 方法不会被继承,protected 方法能继承但不能在类外调用,只有 public 方法才对子类对象开放。

常见错误现象:error: 'func' is a private member of 'Base',明明父类有这个函数,子类却调不到——八成是父类声明成了 private 或 protected,而子类又试图在外部直接调用。

  • 继承方式必须明确:用 : public Base(推荐),而不是 : Base(默认 private 继承,会导致所有继承来的方法变 private)
  • 父类方法若带 virtual,子类重写需加 override,否则可能静默不覆盖
  • 构造函数不继承,子类必须自己定义,并显式调用父类构造:用初始化列表写 Derived() : Base(arg) {}

父类析构函数没加 virtual 会出什么问题

这是 C++ 继承里最隐蔽也最危险的坑:如果父类指针指向子类对象,删除时只调父类析构,子类独有的资源(比如 new 出来的内存、打开的文件句柄)根本不会释放。

典型错误现象:程序跑完没报错,但 valgrind 显示内存泄漏;或者子类析构里打了日志,结果完全没输出。

立即学习“C++免费学习笔记(深入)”;

C++14
C++14

C++14 对 C++11 的修正与增强版本,适合旧系统维护和较老工具链兼容。

下载
  • 只要类可能作为基类被继承,析构函数必须声明为 virtual
  • 不需要手动实现空体,写 virtual ~Base() = default; 就够了
  • 一旦加了 virtual,整个继承链的析构调用顺序就是从派生到基类,安全可靠

子类想扩展父类方法,但又不想完全重写

不是非得二选一:全用父类逻辑,或全自己重写。C++ 支持在子类方法里显式调父类版本,实现“先做父类的事,再加点自己的”。

使用场景:比如父类 save() 把数据写进缓冲区,子类想在此基础上额外写入时间戳,或者发个通知。

  • 语法很简单:Base::save(); —— 注意作用域解析符,不能漏 Base::
  • 只能在子类成员函数内部调,不能在全局或静态函数里用
  • 如果父类方法是 virtual,这里调的仍是父类原始实现,不会触发多态跳转
  • 别在构造/析构函数里这么干:虚函数机制此时未完全建立或已开始销毁

继承后发现函数调用不符合预期,怎么快速定位是不是重载/隐藏搞错了

C++ 不是 Java,子类函数名只要和父类一样,哪怕参数不同,也会隐藏(hide)整个父类同名函数族,而不是像 Java 那样自动构成重载(overload)。

错误现象:obj.func(1); 编译失败,提示 “no matching function”,但明明父类有个 func(int) —— 很可能是子类定义了 func(double),把父类所有 func 都遮住了。

  • 用 using Base::func; 在子类里把父类同名函数引入作用域,就能恢复重载行为
  • 编译器不会警告这种隐藏,除非开启 -Woverloaded-virtual(GCC/Clang)
  • 如果真想重写某个虚函数,务必加 override,编译器会检查签名是否完全匹配,避免拼写或 const 差异导致意外隐藏

继承本身不难,难的是每个细节都牵扯到对象布局、调用决议、生命周期这些底层机制。稍微松懈,bug 就藏在看似正常的调用背后。

相关文章

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

c++

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

355

2025.11.27

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

989

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3020

2023.10.25

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

2258

2023.09.20

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6539

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3165

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

4088

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

2805

2025.08.29

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn