[C++/C] 関数2

### 関数のオーバーロード
引数の型が異なる同じ名前の関数を複数定義することを関数のオーバーロードという。

int main() {
    
    int a, b;
    double da, db;

    cout << "2つの整数を入力してください。\n";
    cin >> a >> b;

    cout << "2つの小数を入力してください。\n";
    cin >> da >> db;

    int ans1 = max(a, b);
    double ans2 = max(da, db);

    cout << "整数値の最大値は" << ans1 << "です。\n";
    cout << "小数値の最大値は" << ans2 << "です。\n";

    return 0; 
}

int max(int x, int y) {
    if (x > y)
        return x;
    else
        return y;
}

double max(double x, double y) {
    if (x > y)
        return x;
    else
        return y;
}

### 関数テンプレート
関数テンプレートの宣言は
template
関数の宣言

仮引数の型名にテンプレート引数を使う
L 型が異なるが同じ処理の場合に纏めて使用できる。

template <class T>
T maxt(T x, T y) {
    if (x > y)
        return x;
    else
        return y;
}

int main() {
    
    int a, b;
    double da, db;

    cout << "2つの整数を入力してください。\n";
    cin >> a >> b;

    cout << "2つの小数を入力してください。\n";
    cin >> da >> db;

    int ans1 = maxt(a, b);
    double ans2 = maxt(da, db);

    cout << "整数値の最大値は" << ans1 << "です。\n";
    cout << "小数値の最大値は" << ans2 << "です。\n";

    return 0; 
}

### Practice

int square(int x) {
    return x * x;
}

int main() {
    
    int x, res;
    cout << "整数を入力してください。\n";
    cin >> x;

    res = square(x);

    cout << x << "の2乗は" << res << "です。\n";

    return 0; 
}
int square(int x) {
    return x * x;
}

double square(double x) {
    return x * x;
}

int main() {
    
    int x, res;
    double bx, bres;
    cout << "整数を入力してください。\n";
    cin >> x;

    res = square(x);

    cout << x << "の2乗は" << res << "です。\n";

    cout << "小数を入力してください。\n";
    cin >> bx;

    bres = square(bx);

    cout << bx << "の2乗は" << bres << "です。\n";

    return 0; 
}

inline

inline int square(int x) { return x * x;}

inline double square(double x) { return x * x;}

関数テンプレート

template <class T>
T squaret(T x){
    return x * x;
}

int main() {
    
    int x, res;
    double bx, bres;
    cout << "整数を入力してください。\n";
    cin >> x;

    res = squaret(x);

    cout << x << "の2乗は" << res << "です。\n";

    cout << "小数を入力してください。\n";
    cin >> bx;

    bres = squaret(bx);

    cout << bx << "の2乗は" << bres << "です。\n";

    return 0; 
}