函数重载
函数重载的条件
同一个作用域下 函数名相同 函数参数不同 – 参数个数不同 – 参数顺序不同 – 参数类型不同 不可以使用返回值作为重载的条件
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)
函数重载注意事项
引用作为重载
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 ) ; system ( "pause" ) ; }
result:
void test ( int & a)
void test ( const int & a)
函数重载遇到默认参数
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 ( 20 , 30 ) ; system ( "pause" ) ;
} result: void test ( int a, int b = 10 )