重複の可能性:
C++ 仮想関数の戻り値の型
ここで、単純だが紛らわしい質問があります。オーバーライドされたメソッドの戻り値の型を、基本クラスで定義された抽象型とは異なるものにすることは合法ですか?? 私はそれをしましたが、コンパイラは文句を言いませんでした...誰か説明してもらえますか?
class MyBaseClass
{
int value;
public:
virtual int getValue() = 0;
};
class MyClass : public MyBaseClass
{
double value;
public:
virtual double getValue(); // here!!! return is double, not int
};
double MyClass::getValue()
{
return this->value;
}
コンパイラは、似たようなもの (MSVC と MinGW) を完全に受け入れました... これがどの程度合法なのか、誰か説明してもらえますか?