目录
前言
最近浏览《Effictive C++》,突然发现:C语言不支持函数重载,C++能够支持这一特性。确实有点颠覆认知。看有关C++的书籍多一点的缘故吧!
概述
函数重载
在 C++ 中,函数重载是指可以定义多个同名函数,但它们的参数列表必须不同(包括参数类型、参数个数或参数顺序)。通过函数重载,我们可以使用相同的函数名来实现不同的功能。
-
函数名相同:在函数重载中,函数名必须相同。
-
参数列表不同:函数重载通过参数列表的差异来区分不同的函数。参数列表包括参数的类型、个数和顺序。
cpp#include <iostream> void print(int num) { std::cout << "Integer number: " << num << std::endl; } void print(double num) { std::cout << "Double number: " << num << std::endl; }
-
返回类型不同:C++ 不允许只根据返回类型的不同来进行函数重载。因为编译器无法仅根据返回类型来确定调用哪个函数。
cpp#include <iostream> void print(int num) { std::cout << "Integer number: " << num << std::endl; } int print(int num) { std::cout << "Double number: " << num << std::endl; }
以上实例是无法编译通过的。
-
可以重载成员函数:在类中,成员函数之间也可以进行重载,遵循上述规则。
-
const 成员函数:const 成员函数与非 const 成员函数可以进行重载。当对象为 const 时,会调用 const 成员函数;否则调用非 const 成员函数。
-
默认参数:函数重载中可以使用默认参数,但要注意默认参数的位置应该放在非默认参数的后面。