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 {