これも、C++の設計と進化を読んで知った。
C++では、オーバライド関数の返値は、ベースクラスの関数と正確に一致しなくても良い。
BがDのアクセス可能なベースクラスであるときには、B*をD*で、そしてB&をD&でオーバライドできるようにした。
class B {
virtual B* clone() { return new B(*this); }
};
class D : public B {
D* clone() { return new D(*this); }
};
« cross-cast | メイン | 最近描いた絵いろいろ »
これも、C++の設計と進化を読んで知った。
C++では、オーバライド関数の返値は、ベースクラスの関数と正確に一致しなくても良い。
BがDのアクセス可能なベースクラスであるときには、B*をD*で、そしてB&をD&でオーバライドできるようにした。
class B {
virtual B* clone() { return new B(*this); }
};
class D : public B {
D* clone() { return new D(*this); }
};
このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/422