11章 オーバーロード

http://www.geocities.jp/ky_webid/cpp/language/011.html

お次はオーバーロードの話です。

オーバーライドとは別物です。名前がややこしいですね。

同じ関数名でも、引数の型が違えば定義できるというのがオーバーロードです。

これは便利ですね。C言語のときはfoo_intとかfoo_charとかわざわざ別名で作らないといけなかったのでこの機能は素晴らしいです。

実装してみます。

#include <iostream>

class CClass {
public:
    void foo(int);
    void foo(char*);
};

void CClass::foo (int num) {
    std::cout << "int: " << num << std::endl;
}

void CClass::foo (char *str) {
    std::cout << "char*: " << str << std::endl;
}

int main () {
    CClass obj;
    
    obj.foo(100);
    obj.foo("foo");
    
    return 0;
}
$ main
int: 100
char*: foo

ちゃんと別の関数が呼ばれていますね。