C++ 重载函数
重载 是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义不相同
C++ 允许在同一作用域中的某个 函数 指定多个定义,称为 函数重载
调用一个 重载函数 时,编译器通过比较函数的 形参 和 实参,决定选用最合适的定义
形参 就是指函数声明或定义时指定的参数
实参 就是指调用函数时传递的参数
比如
int max(int a, int b){ return a > b ? a : b; } int x = 3; int y = 5; max(x,y );
a
和 b
是形参,x
和 y
是实参
选择最合适的重载函数的过程,称为 重载决策
C++ 中的函数重载
在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同
注意: 不能仅通过返回类型的不同来重载函数
例如我们可以定义很多个 i()
函数来输出不同的数据类型
/** * file: main.cpp * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <iostream> class Log { public: void i(int i) { std::cout << "info int: " << i << "\n"; } void i(double f) { std::cout << "info float: " << f << "\n"; } void i(const char* c) { std::cout << "info character: " << c << "\n"; } }; int main(void) { Log l; // 调用 echo 函数输出 int 数据类型 l.i(64); // 调用 echo 函数输出 float 数据类型 l.i(3.1415926); // 调用 echo 函数输出 string 数据类型 l.i("Hello www.twle.cn"); return 0; }
使用 g++ main.cpp && ./a.out
命令编译和运行以上范例,输出结果如下
info int: 64 info float: 3.14159 info character: Hello www.twle.cn