1. ホーム
  2. c++

[解決済み] C++11で関数に使用される "final "キーワードは何のためにあるのですか?

2022-04-24 10:30:36

質問

の目的は何ですか? final というキーワードは、C++11では関数に使われるのでしょうか?派生クラスによる関数のオーバーライドを防止するものだと理解していますが、そうであるならば final の関数は?また、何か見落としていることがあるのでしょうか?

どのように解決するのですか?

足りないのは、すでにidljarnがコメントで述べているように、もしあなたが オーバーライド を非仮想としてマークすることはできません。

struct base {
   virtual void f();
};
struct derived : base {
   void f() final;       // virtual as it overrides base::f
};
struct mostderived : derived {
   //void f();           // error: cannot override!
};