C++系列-函数重载
函数重载
- 函数名可以相同, 提高复用性
函数重载的条件
- 同一个作用域下
- 函数名相同
- 函数参数不同
-- 参数个数不同
-- 参数顺序不同
-- 参数类型不同 - 不可以使用返回值作为重载的条件
cpp
code:
#include<iostream>
using namespace std;
void test()
{
cout << "void test()" << endl;
}
void test(int a)
{
cout << "void test(int a)" << endl;
}
void test(int a, float b)
{
cout << "void test(int a, float b)" << endl;
}
void test(float a, int b)
{
cout << "void test(float a, int b)" << endl;
}
void main()
{
test();
test(100);
test(100, 3.14);
test(3.14, 100);
system("pause");
}
result:
void test()
void test(int a)
void test(int a, float b)
void test(float a, int b)
函数重载注意事项
引用作为重载
- 参数可以分为const和非const。
cpp
code:
#include<iostream>
using namespace std;
void test(int &a)
{
cout << "void test(int &a)" << endl;
}
void test(const int& a)
{
cout << "void test(const int& a)" << endl;
}
void main()
{
int a = 10;
test(a);
test(10); // 当执行void test(int &a) 则为int &a=10,会出错,const int& a=10,正常
system("pause");
}
result:
void test(int &a)
void test(const int& a)
函数重载遇到默认参数
cpp
code:
#include<iostream>
using namespace std;
void test(int a, int b = 10)
{
cout << "void test(int a, int b = 10)" << endl;
}
void test(int a)
{
cout << "void test(int a)" << endl;
}
void main()
{
//test(666); // 报错,不知道执行哪一个
test(20, 30);
system("pause");
}
result:
void test(int a, int b = 10)