目录
2.2 C++支持函数重载的原理--名字修饰(name Mangling)
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。
1.必须从右往左依次来给出,不能间隔着给缺省参数。
2. 缺省参数不能在函数声明和定义中同时出现
3. 缺省值必须是常量或者全局变量
4. C语言不支持(编译器不支持)
自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数的形参列表(参数个数或类型或类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
小心函数调用的二义性
为什么C++支持函数重载,而C语言不支持函数重载呢?
函数调用本质是在call函数地址
编译链接的时候:
符号表:对于函数而言,放的是函数名,及其对应的地址。
c和c++的符号表存放不同:
c语言:
同一个域里面,不能定义同名变量,同名函数,方便区分。
c同名函数的无法区分,所以不能支持重载:
C++:
通过对同名函数的区分:
主要是根据参数的类型进行区分,对于函数名进行了修饰:
c++中符号表中函数名修饰规则为:函数名的长度+函数名+参数类型的缩写
不同的平台设计规则不同,以linux下gcc的情况演示:
好久不见,这里是在开学期末考中苦苦挣扎而出的媛仔,终于考完啦!!可以继续更新博客了^_^,哈哈哈国庆终于能快乐的打代码了,希望这篇博客能够对你有所帮助,也欢迎大家和我多多交流!谢谢大家!!