【C++】基础入门(二):缺省参数与函数重载


目录

1.缺省参数

1.1 缺省参数概念

1.2 缺省参数分类

1.2.1.全缺省参数

​编辑1.2.2. 半缺省参数

1.3注意事项

2. 函数重载

2.1 函数重载概念

2.1.1.参数类型不同

2.1.2.参数个数不同

2.1.3.参数类型顺序不同

 注意:

 2.2 C++支持函数重载的原理--名字修饰(name Mangling)

面试题: 返回值不同,能不能构成函数重载?

最后:



1.缺省参数

1.1 缺省参数概念

  缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。


1.2 缺省参数分类

1.2.1.全缺省参数

1.2.2. 半缺省参数


1.3注意事项

1.必须从右往左依次来给出,不能间隔着给缺省参数。

2. 缺省参数不能在函数声明和定义中同时出现

3. 缺省值必须是常量或者全局变量

4. C语言不支持(编译器不支持)


2. 函数重载

  自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。

2.1 函数重载概念

  函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这 些同名函数的形参列表(参数个数类型类型顺)不同,常用来处理实现功能类似数据类型不同的问题。

2.1.1.参数类型不同

2.1.2.参数个数不同

2.1.3.参数类型顺序不同

 注意:

小心函数调用的二义性


 2.2 C++支持函数重载的原理--名字修饰(name Mangling)

为什么C++支持函数重载,而C语言不支持函数重载呢?

函数调用本质是在call函数地址

编译链接的时候:

符号表:对于函数而言,放的是函数名,及其对应的地址。

详细内容可移步我的这篇博客:(71条消息) 程序环境和预处理(上):一个程序是怎么成功运行的?_vpurple__的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/vpurple_/article/details/125886142?spm=1001.2014.3001.5502

c和c++的符号表存放不同:

c语言:

同一个域里面,不能定义同名变量,同名函数,方便区分。

c同名函数的无法区分,所以不能支持重载:

 C++:

通过对同名函数的区分:

主要是根据参数的类型进行区分,对于函数名进行了修饰:

c++中符号表中函数名修饰规则为:函数名的长度+函数名+参数类型的缩写

不同的平台设计规则不同,以linux下gcc的情况演示:

面试题: 返回值不同,能不能构成函数重载?

最后:

  好久不见,这里是在开学期末考中苦苦挣扎而出的媛仔,终于考完啦!!可以继续更新博客了^_^,哈哈哈国庆终于能快乐的打代码了,希望这篇博客能够对你有所帮助,也欢迎大家和我多多交流!谢谢大家!!

猜你喜欢

转载自blog.csdn.net/vpurple_/article/details/127119413