函数的默认值,C/C++区别
参考书籍:《C++ Primer》
1.函数的默认值
函数设计过程中给予形参默认值
没有实参,形参有默认值
1.1.函数默认的赋值规则
1.默认值的赋予:自右向左
2.默认值不能重复赋予(因为如果两次,默认值赋予的不同,会出现二义性)
3. 默认值一般设置在声明上 (因为声明一般在调用之前)
1.2.函数调用过程:
实参的入栈顺序:自右向左
函数的实参和形参的匹配顺序:自左向右
2.函数重载
1.函数的返回值 x
2.函数名称 x
3.形参列表:
1.形参类型不同 √
2.形参个数不同 √
3.形参顺序不同 √
函数重载三要素:
1.同名
2.不同参
3.同作用域(不同作用域,不能构成重载)
只有返回值不同时候,调用时没法决定到底采用哪个,因此,返回值不能影响函数的重载
函数名称不同不叫函数重载
函数重载的匹配:
1.精确匹配
2.隐式转换(类型提升,窄到宽)
3.强制转换(显示转换,宽到窄)
实现两个数相加(没说类型)
2.1.宏处理
#define Sum(a,b) a+b
int main()
{
Sum(10.6,20.7);
return 0;
}
2.2.void*
void* [):有起始没终点,所以需要给长度 ,半开半闭的
int []:内存块有起始有终点
容易越界
2.3函数重载:同名函数可以共存
2.4为什么c语言中没有函数重载
函数符号生成规则:
c:只与函数名称有关
C++:和函数原型有关—>返回值 +函数名称+ (形参列表)三者就叫函数原型(除了函数体哦~)