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