« 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

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年06月30日 08:19に投稿されたエントリーのページです。

ひとつ前の投稿は「cross-cast」です。

次の投稿は「最近描いた絵いろいろ」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35