タグ

C++とfinalに関するyowanoのブックマーク (1)

  • C++0xの新機能、finalとoverride

    gcc 4.7は、finalとoverrideを実装している。 finalとは、クラスの派生と、virtual関数のオーバーライドを禁止するための機能である。 struct B final { } ; struct D : B { } ; // エラー struct C { virtual void f() final { } } ; struct D : C { void f() { } // エラー、C::fはオーバーライドできない } ; これ以上説明する必要がないくらいに分かりやすい機能だ。現実的には、最底辺の基クラスのvirtual関数のオーバーライドを禁止にするということはない。なぜならば、それは普通の関数とほぼかわりないからだ。あえて言えば、派生クラスで、同じシグネチャの関数を定義できなくする程度の意味しかない。大方、以下のような目的に使われるだろう。 struct A {

    yowano
    yowano 2014/01/06
    『virtual関数をオーバーライドするさいには、virtualキーワードは必要ない』『void f() final override { }』この2つが自分にとって重要だった。
  • 1