缺省参数
void testfun(int a = 0)//缺省参数、默认参数
{
cout << a << endl;
}
void testfun1(int a = 10, int b = 20, int c = 30 )//全缺省
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
void testfun1(int a , int b = 20, int c = 30 )//半缺省
int main
{
testfun();//没有传参时使用参数的默认值
testfun(1);
testfun1(1);
testfun1(1,2);
testfun1(1,2,3);
return 0;
}
⚠️必须从左往右缺省,并且连续
❌❌❌缺省参数不能在声明和定义中同时出现,编译器不知道使用哪个
//queue.h
#pragma once
#include <iostream>
void queueinit(int n = 10 );//声明给定义不给时,给不给传参都可编译
void queueinit(int n);//当声明不给,定义给时,不传参时编译不通过
//test.cpp
#include"queue.h"
int main()
{
queueinit();
queueinit(1);
return 0;
}
🙌编译的时候会展开当前文件所包含的头文件,而此时头文件中的声明中没有给默认参数,如果不传参数就会编译报错,链接的时候才会去找函数的地址和定义
函数重载
⚠️⚠️⚠️c语言不支持同名函数,c++支持
💕要求:参数名相同----函数重载
💕参数不同:参数个数/类型/顺序
💕返回值不同不构成重载
int add(int left, int right);
int add(double left, double right);
int main()
{
cout << add(1, 2) << endl;
cout << add(1.1, 2.2) << endl;
}
❓❓❓c语言为什么不支持函数重载
🙌c语言中符号表中直接以函数名为名称,当两函数名称相同时(函数重载)会出现函数地址冲突,不支持函数重载