缺省参数和函数重载总结
缺省参数概念:缺省参数是声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参
则采用该默认值,否则使用指定的实参
例子:
缺省参数又分为全缺省参数和半缺省参数
注意:1.带缺省值的参数必须放在参数列表的最后面
2.缺省参数不能同时在函数声明和定义中出现,二者则其一
3.缺省值必须是常量或者全局变量
4.C语言不支持缺省参数
全缺省参数:
void fun(int x=0,int y=0,int z=0)
{
cout<<x<<endl;
cout<<y<<endl;
cout<<z<<endl;
}
半缺省参数:
void fun(int x, int y, int z = 0)
{
cout << x << endl;
cout << y << endl;
cout << z << endl;
}
函数重载概念:C++允许在同一个作用域中声明几个功能类似的同名函数,这些同名函数的形参列表
(参数个数、类型、顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。
例子:
int add(int left,int right)
{
return left + right;
}
char add(char left, char right)
{
return left + right;
}
int main()
{
add(1, 2);
add('1', '2');
system("pause");
return 0;
}
接下来介绍几道经典面试题:
1.C语言中为什么不能支持函数重载?
首先看一下编译的整个过程:
1.预处理 展开头文件/宏替换/去掉注释 生成(.c)文件
2.编译 检查语法,生成汇编代码 生成(.s)文件
3.汇编 汇编代码转成机器码 生成(.obj)文件
4.链接 链接到一块生成可执行程序 生成(.exe)文件
编译.c文件时,只会给函数进行简单的重命名,具体方法是给函数名之前加上“_”
所以加入两个函数名相同的函数在编译之后的函数名也照样相同,编译器不知道调用哪个而出错
2.C++中函数重载底层是怎么处理的?
在cpp文件中,虽然两个的函数名相同,但是在符号表中生成的名称不同
3.C++中能否将一个函数按照C的风格来编译?
可以按照C的风格来编译,只要在函数名前面加上 extern "C" 就可以了
例子:
extern "C" int add(int x, int y)
{
return x + y;
}
int main()
{
cout << add(1, 2) << endl;
system("pause");
return 0;
}
上一篇: 基于Nodejs的TCP通信
推荐阅读
-
浅谈javascript的url参数parse和build函数
-
SQL Server 排序函数 ROW_NUMBER和RANK 用法总结
-
Python函数和模块的使用总结
-
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
-
浅谈javascript的url参数parse和build函数
-
Shell脚本函数定义和函数参数
-
Java学习总结之方法重载和方法重写
-
SQL Server 排序函数 ROW_NUMBER和RANK 用法总结
-
学习9.总结# 1.函数初识 # 2.函数的定义 # 3.函数的调用 # 4.函数的返回值 # 5.函数的参数
-
c++-内联函数和函数重载和默认参数和函数指针