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