#include <iostream>
using namespace std;

// 函数的重载，和函数名、返回值类型、参数列表有关
// 函数名相同，参数列表不同（个数、类型、顺序），构成重载
namespace A
{
    int add(int a, int b) { return a + b; }
    float add(int a, float b) { return a * 2.0f + b; }
    double add(int a, double b) { return a * 3.0 + b; }
    int add(int a, int b, int c) { return a + b + c; }
}

int main()
{
    // 目的：调用 A 命名空间中的 add 函数
    using A::add;
    // 调用函数时，编译器会根据参数列表的类型，自动匹配对应的函数
    cout << "add(1, 1.5f) = " << add(1, 1.5f) << endl;
    cout << "add(1, 1.5) = " << add(1, 1.5) << endl;
    cout << "add(1, 3) = " << add(1, 3) << endl;
    return 0;
}