コンテンツにスキップ

オーバーロード#

オーバーロードとは#

オーバーロードとは、同じ名前の関数やメソッドを複数定義することです。

オーバーロードとは「ライド(乗る)」の意味で、オーバーライドとは「ライド(乗せる)」の意味で区別できます。

オーバーロードの例#

#include <cstdio>

class Human {
public:

    Human() = default;

    // オーバーロードの例
    void greet()
    {
        printf("Hello\n");
    }

    void greet(const char* name)
    {
        printf("Hello, I'm %s. I'm %d years old.\n", name, age);
    }

    void greet(const char* name, int age)
    {
        printf("Hello, I'm %s. I'm %d years old.\n", name, age);
    }
};

int main()
{
    Human human;
    human.greet();
    human.greet("Taro");
    human.greet("Taro", 20);
}

実行結果

Hello.
Hello, I'm Taro.
Hello, I'm Taro. I'm 20 years old.


オーバーロードの注意点#

オーバーロードを使用する場合、以下の点に注意する必要があります。

  • オーバーロードする関数やメソッドの引数の数が異なる
  • オーバーロードする関数やメソッドの引数の型が異なる
  • オーバーロードする関数やメソッドの引数の順番が異なる

オーバーライドで定義する場合は、最初から全て用意しておく必要があります。

異なる型で同じパターンを定義する場合は、templateを使用する必要があります。