### 関数のオーバーロード
引数の型が異なる同じ名前の関数を複数定義することを関数のオーバーロードという。
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; 
}
	 
					 
