この章では、関数の「オーバーロード(overload)」について学びます。 オーバーロードとは、同じ名前の関数を引数の型や数を変えて複数定義できる仕組みです。
// 11_function_overload.cpp
#include <iostream>
using namespace std;
void print(int n) {
cout << "整数: " << n << endl;
}
void print(string s) {
cout << "文字列: " << s << endl;
}
int main() {
print(10);
print("Hello");
return 0;
}同じ関数名 print
が2回定義されていますが、引数の型が違うため区別されます。
実引数と仮引数の一致するものが呼び出されます。
// 11_function_overload_args.cpp
#include <iostream>
using namespace std;
void greet() {
cout << "こんにちは!" << endl;
}
void greet(string name) {
cout << "こんにちは、" << name << " さん!" << endl;
}
int main() {
greet();
greet("Tanaka");
return 0;
}同じ関数名 greet
が2回定義されていますが、引数の数が違うため区別されます。
実引数と仮引数の一致するものが呼び出されます。
// 11_class_method_overload.cpp
#include <iostream>
using namespace std;
class Calc {
public:
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
};
int main() {
Calc c;
cout << c.add(3, 5) << endl;
cout << c.add(2.5, 1.5) << endl;
return 0;
}#include <iostream>
using namespace std;
void show(int n) {
cout << "整数: " << n << endl;
}
void show(double d) {
cout << "実数: " << d << endl;
}
int main() {
show(5);
show(3.14);
return 0;
}整数: 5
実数: 3.14
Calc クラスを定義し、次の3つの add
関数をオーバーロードで定義しなさい:
int add(int, int)double add(double, double)string add(string, string)main関数でそれぞれを試すこと。
// 11_calc_all.cpp
#include <iostream>
using namespace std;
class Calc {
public:
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
string add(string a, string b) {
return a + b;
}
};
int main() {
Calc c;
cout << c.add(1, 2) << endl;
cout << c.add(1.5, 2.5) << endl;
cout << c.add("Hello, ", "World!") << endl;
return 0;
}