#include<iostream>
using namespace std;
/*
*函数重载:同一个东西表示两个不同的意思,俩个不同的意思怎么区分呢,由语境决定,C语言里面函数名是不能相同的。
*
*int func(int a)
*int func(char b)
*如果你int a=10;func(a)的话就是调用的int func(int a),看语境的。
*重载就是名字相同,意义不同。意义如何不同呢,就是上下文的语境决定的
*什么时候构成重载呢,1.函数名相同,函数参数列表不同。具体来说就是类型 个数,顺序
函数重载其实也叫静多态,同一个名字展现出不同的输出结果。
匹配原则:严格匹配,找到则调用。你是int就是int,你是double就是double
如果找不到合适的,通过隐式转换寻求一个匹配,找到则调用。隐式转换就是小到大可以,但是大到小不行,如果隐式转换了,哪个在前就调用那个,比如下面的这段程序就是调用前面的
*
*
*/
/*
void print(double a)
{
printf("print(int a)\n");
}
void print(int a)
{
printf("print(double a)\n");
}
int main()
{
print('a');
return 0;
}
*/
/*
*
*
*记得,如果double如果函数重载,有两个函数是void print(int a) void print(float b) 这样就会报错,因为他不知道转换成哪一个
*如下面这段程序
还有一个就是int 转换成long 和double也会造成困惑,记住这两个特殊的就行了
函数类型不构成重载
重载的原理 ,
*/
/*
void print(int a)
{
printf("void print(int a)\n");
}
void print(float b)
{
printf("void print(float b)\n");
}
int main()
{
print(3.3);
return 0;
}
*/
C++学习day2之函数重载
最新推荐文章于 2019-09-10 12:39:01 发布