C++ 函数重载

函数重载

void fun();

void fun(int a);

void fun(int a, float f);

void fun(float f, int a);

void fun(int a, double d);

上面声明的 5 个函数互为重载函数,它们之间满足参数类型不同和参数个数不同两个条件中的一个或两个,OS 会根据参数的不同,自动找到要调用的函数

函数参数缺省值/默认值

#include <iostream>

using namespace std;

void fun1(int a = 10, double d = 3.4) {           // 全部指定默认值
  cout << a << " " << d << endl;
}

// 设置函数形参的默认值只需要在函数声明的地方进行,函数定义的地方不用写,
// 写了会报重定义默认参数的错误
void fun2(int a, double d = 3.5, char c = 'a');   // 部分指定默认值,从右向左

int main() {
  fun1();              // 不传实参
  fun1(11);            // 从左向右传递一个实参,覆盖第一个形参默认值
  fun1(12, 13.4);      // 从左向右传递两个实参,覆盖两个形参的默认值
  fun2(4);             // 给未指定默认值的形参传递实参
  fun2(5, 3.6);
  fun2(6, 3.8, 'c');
  system("pause");
  return 0;
}

void fun2(int a, double d, char c) {
  cout << a << " " << d << " " << c << endl;
}

注意

void fun(int a);
void fun(int a, double d = 2.3);
// 都可以用 fun(3); 调用,会报错
void fun(float f);
void fun(double d);
// fun(2.3f); 或 fun(2.3F); 调用形参为 float 的函数
// fun(2.3); 调用形参为 double 的函数,因为C/C++浮点型数据默认是 double 型
Table of Contents