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

重载和重写的区分

这是 C++ 初中级阶段经常混淆的两个概念 —— 重载(Overload)重写(Override)。我们可以用 对比 + 场景记忆 + 类比法 来深刻掌握。


🔁 一张表快速对比

特性重载 Overload重写 Override
位置同一个类中子类中重写父类的虚函数
函数名相同相同
参数列表必须不同(个数/类型/顺序)必须相同(类型、顺序都得一样)
返回值可以不同要么相同,要么是协变返回类型
关键字要求无需关键字C++11 起推荐用 override 明确标记
多态支持❌ 不支持运行时多态(编译期确定)✅ 支持运行时多态(虚函数机制)
用途场景同功能但参数不同父类接口规范化,子类行为定制化

🧠 场景式记忆法

🎯 1. 重载 Overload —— “多才多艺的同名函数”

关键词:同一个人,做同一件事,但工具不同。

例子: 你是一个打印函数 print()
你可能会收到不同的参数:

void print(int x);
void print(std::string s);
void print(double d);
  • 在同一个作用域内

  • 参数不同

  • 编译时确定调用哪一个(编译期多态)

  • 这就是 函数重载(Overload)


🧬 2. 重写 Override —— “子类改写父类行为”

关键词:儿子有自己的做事风格。

例子:

class Animal {
public:virtual void speak() const { std::cout << "Animal speaks\n"; }
};class Dog : public Animal {
public:void speak() const override { std::cout << "Dog barks\n"; }
};
  • speak() 是父类的虚函数,子类 Dog 重写了它的实现

  • 要求:函数名、参数、const 等签名必须一致

  • 运行时决定调用哪个(运行时多态);

  • 这就是 函数重写(Override)

✅ 推荐加上 override 关键字,防止写错、增强代码自文档性。


🎨 类比法(生活记忆)

重载 Overload重写 Override
同一岗位下的多种技能爸爸是老师,儿子长大后自己也当老师,但教学方法不同
一个客服,能处理多种问题公司原有的政策被经理更新了,更符合实际需求

✅ 小总结口诀

“重载靠参数,重写靠继承。前者编译选,后者运行定。”

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

相关文章:

  • JavaScript中的this到底是什么
  • 机器学习--线性回归模型
  • express查看文件上传报文,处理文件上传,以及formidable包的使用
  • NestJS——使用TypeORM操作数据库、增删改查、关联查询、QueryBuilder
  • Cursor中调用本地大语言模型
  • 通过监督微调(SFT)提升AI Agent效果的完整指南
  • 2、DevEco Studio的使用
  • CentOS 7.9升级OpenSSH到9.9p2
  • simulink编程总结
  • import*的展开(开发工具)
  • Linux下载与安装——笔记
  • Java线程池那点事
  • Java Collections工具类指南
  • express-generratior工具用法
  • 2025德国FIBO展会:绝影XENJOY以创新科技引领智能健身新浪潮
  • 【华为HCIP | 华为数通工程师】821—多选解析—第十五页
  • 如何找到win11系统powershell的属性
  • Nature Genetics | 测序技术与深度学习在 circRNA 鉴定中的应用
  • 如何在Android中实现低延迟的多实例RTSP|RTMP播放器
  • 论文阅读笔记——π0.5: a Vision-Language-Action Model with Open-World Generalization
  • Linux命令-strace
  • 第13章 身份验证:使用Identity将用户添加到应用程序中
  • 多线程(线程安全)
  • 处理任务“无需等待”:集成RabbitMQ实现异步通信与系统解耦
  • 十分钟应急响应——自定义工具链整合实战
  • 致远oa部署
  • 炼锌废渣提取钴工艺流程
  • Powershell 命令实操
  • PCB 制造流程分步指南
  • 重磅更新!Nature再推出新子刊!(附Nature全目录下载)