派生クラスをオーバーライドするときはvirtualつけようぜ

2014年3月3日

C++ では、継承とvirtualってやつを使ってオーバーライドすることができる
virtualをつけるのは、基底のクラスだけでよいみたいだけど、
派生のクラスにもつけておかないと訳が分からなくなるらしい。
たとえば、以下のような場合、

//Base.h
class Base
{
    virtual void doSomething();
    …
};
//Derived.h
class Derived : public Base
{
    void doSomething();
    …
};

このDerivedの定義だけをみてdoSomething関数がオーバーライドの関数なのかどうか判断するのが難しい。
ということで、virtualをつけて以下のようにするとよいらしい。

//Base.h
class Base
{
    virtual void doSomething();
    …
};
//Derived.h
class Derived : public Base
{
    // ここにもvirtual付けるのよ!!
    virtual void doSomething();
    …
};

まあ、動作結果はどちらも同じらしいので、コメント入れておくだけでも
良いかもしれないけどね!!
まあ、俺はvirtual好きだからね。つける方にするよ。
現実より仮想世界。2次元!!(2.5次元もいいかもね。)
では。

c++

Posted by koheizi