关于函数重载和函数重写的感想
在C++中存在两种比较难理解的概念
1、函数重载
首先在C++中,如果两个函数的作用域相同,然后两个函数的名字相同但是形参不同,这样的两个函数是会形成重载关系的。
但是对是否是virtual的要求可有可无,而且对返回值类型的要求也可有可无。
有一点值得注意的是const会影响函数的重载,因为在多个参数的函数中,const会影响参数的优先顺序从而导致两个函数的参数在同一队列,这样就会产生错误,但是这种错误是发生在调用过程中的,也就是说如果不对相关联的函数进行调用,是不会发生错误的。
2、函数重写
函数重写在C++中是属于不同的两个类中,而且一定要是虚函数(virtual),如果存在函数名相同、形参列表相同,返回值类型相同(可以不同,但是必须是可以经过某种方式进行转换的),就会形成重写,
重写和覆盖本质上是同一中语法的不同名称而已。所以在期间一定是发生过继承关系的父子类之间才会形成重写(覆盖)。否则就有可能形成重写
posted on 2019-05-23 10:40 A-grain-of-wheat 阅读(874) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?