©️

C++ 関数の多重定義(オーバーロード)

2024/10/01に公開

多重定義(オーバーロード)とは

同じ名前で戻り値・引数が違う関数を作れる

int OverloadFunc(int a);
int OverloadFunc(int a, int b);
int OverloadFunc(int a, double c);
double OverloadFunc(double c,  double d);

戻り値の型以外が同じ関数は多重定義できない

int OverloadFunc(int a, double c);
double OverloadFunc(int i, double d); // エラー

サンプル

#include <iostream>
#include <math.h>

// OverloadFuncを多重定義
int OverloadFunc(int a);
int OverloadFunc(int a, int b);
int OverloadFunc(int a, double c);
double OverloadFunc(double c,  double d); // 戻り値が違うパターン

int main(void) {
    // 多重定義したOverloadFuncを呼び出す
    std::cout << OverloadFunc(1) << "\n";
    std::cout << OverloadFunc(1, 3) << "\n";
    std::cout << OverloadFunc(1, 5.5) << "\n";
    std::cout << OverloadFunc(5.5, 2.1) << "\n";
    return 0;
}

int OverloadFunc(int a) {
    return a;
}

int OverloadFunc(int a, int b) {
    return a + b;
}

int OverloadFunc(int a, double c) {
    return a + round(c); // roundで四捨五入
}

double OverloadFunc(double c,  double d) {
    return c + d;
}

実行結果

1
4
7
8.6

Discussion