c++之默认函数

C+ +允许函数设置默认参数,在调用时可以根据情况省略实参。规则如下:

  • 默认参数只能按照右到左的顺序
  • 如果函数同时有声明、实现,默认参数只能放在函数声明中
  • 默认参数的值可以是常量、全局符号(全局变量、函数名)
  • 函数重载、默认函数可能存在冲突性、二义性。建议优先保留默认函数
void display(int a, int b =10){
}
void display(int a){
}
//二义性,不知道调用哪个
display(19);

利用汇编理解重载实现:
对于
sum(int a,int b)无默认参数函数,其汇编码如下:


image.png

对于
sum(int a,int b = 4):


默认参数

汇编代码完全相同,(机器码E8后面地址不同是因为intel机器码计算方式所导致,它是根据所调用函数所处位置计算出来的机器码,但是其调用的函数地址是同一个地址)

所以调用sum(1)相当于调用sum(1,4);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容