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

函数重载的奥秘

现实世界中”重载”无处不在,”某某可以做,这里为什么不可以做”不断告诉我们,人类从来都喜欢follow一些规则,不愿意改变。函数重载不是重载的全部,运算符一样可以重载。

重载形式

  • C语言不支持重载,类似的函数不得不改名。
  • ObjC类成员函数支持重载。
  • C++开始的面向对象语言大部分支持重载,C++ const修饰符让string类型的重载更加麻烦,程序员可能要同时处理形如const char* 和 const std::string&类型变量,C++17引入了std::string_view, 一种只读的表示字符串的string, 不包含真实字符串数据,只有查阅的权限,简化了代码。
  • C#/Java支持重载。
  • Python支持函数重载,用默认参数、可变参数和functools.singledispatch指示。
  • JS没有真正的函数重载。
  • Go/Rust不支持重载,Go官方给的说明是为了保持简单,这是语言设计者的意图,但事实上可能没有重载是个缺失。

类函数重载

  • C++类在实现const和非const版本函数时,大部分代码都相同,但却要写2份代码。通过const_cast和as_const(C++17引入)轻松将非const版本转换成const版本。

类函数重载失效

  • C++不希望某个函数特定类型参数被传入,可以显式指定废置重载。
    • 例如void func(double)函数不希望传入int类型,void func(int) = delete废置int类型。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • link .css加载失败事件
  • 乐凡三防平板高性能为稳定运行保驾护航
  • 如何应对日益复杂的网络攻击?Edge SCDN(边缘安全加速)的应用场景探讨
  • Java算法之梳排序(Comb Sort)
  • 【nodejs】windows切換nodejs版本集成webstorm
  • 覆盖 7 百万问答数据,上海 AI Lab 发布 ChemLLM,专业能力比肩 GPT-4
  • 打卡第60天------图论
  • 2860.让所有学生保持开心的分组方法数
  • UDS诊断 - DTC状态位
  • Unity SceneView 相机聚焦到指定位置
  • Linux awk案例
  • Qt模态对话框与非模态对话框
  • 手搓智能体第三弹之复刻 ⌈ AI智能搜索 ⌋
  • 【C++ 第十九章】异常
  • 哈希 详解
  • 11111111
  • iOS 颜色设置看我就够了
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • js对象的深浅拷贝
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • linux安装openssl、swoole等扩展的具体步骤
  • mockjs让前端开发独立于后端
  • 给Prometheus造假数据的方法
  • 基于组件的设计工作流与界面抽象
  • 配置 PM2 实现代码自动发布
  • 为什么要用IPython/Jupyter?
  • 用mpvue开发微信小程序
  • 用简单代码看卷积组块发展
  • 栈实现走出迷宫(C++)
  • 正则表达式小结
  • Mac 上flink的安装与启动
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 积累各种好的链接
  • #pragma multi_compile #pragma shader_feature
  • (C语言)fread与fwrite详解
  • (done) 两个矩阵 “相似” 是什么意思?
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (不用互三)AI绘画工具应该如何选择
  • (待修改)PyG安装步骤
  • (多级缓存)缓存同步
  • (七)glDrawArry绘制
  • (四)模仿学习-完成后台管理页面查询
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)、python程序--模拟电脑鼠走迷宫
  • (转)Google的Objective-C编码规范
  • (转)IOS中获取各种文件的目录路径的方法
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • ../depcomp: line 571: exec: g++: not found
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .gitignore文件忽略的内容不生效问题解决
  • .java 9 找不到符号_java找不到符号
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net Core中Quartz的使用方法
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现