首先我们要了解什么是函数重载:函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。
那么问题来了,C++究竟比C强大到哪里了呢?为什么C就不允许我们命名多个同名函数呢。
其实如果在我们运行这些函数时转到编译看一看,就会明白。C++在底层运行这些函数时,会重新给这些函数起一个包含其参数列表的名字(不同平台命名规则不同),这样一来程序在编译时,根据重载的条件 — 形参列表必须不同,底层就会给每个表面上看似同名的函数起一个独一无二的名字,这也就意味着他们变成了不同名的函数,因而也就可以同时运行。
而反观C语言环境下,底层重新命名时仅仅是在原来的名字前加了一个下划线(-),因此运行时这些函数时他们依然同名,也就无法达到重载的效果。
为什么C++支持函数重载而C不允许
原创
©著作权归作者所有:来自51CTO博客作者见风是风的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:List的实现总结
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Mysql不用NULL的几个理由
(1)所有使用NULL值的情况,都可以通过一个有意义的值的表示,这样有利于代码的可读性和可维护性,并能从约束上增强业务数据的规范性。
java mysql sql php 数据库 -
MySQL 一千个不用 NULL 的理由
为什么?
mysql 字段 sql -
C/C++中printf和C++中cout的输出格式
一、 Printf 输出格式C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型,其中方括号[]中的项为可选项。各项的意义介绍如下:
ios #include 双精度 十进制 无符号整数