title: Does it make sense to add final keyword to the virtual function in a class that has no base class (is not derived)
body: <p>I am reading an awesome <a href="https://isocpp.org/wiki/faq/cpp11-language-classes#final" rel="nofollow noreferrer">awesome C++11 tutorial</a> and the author provides this example while explaining the <code>final</code> keyword:</p>
  
  <pre><code>struct B {
      virtual void f() const final;   // do not override
      virtual void g();
  };
  struct D : B {
      void f() const;     // error: D::f attempts to override final B::f
      void g();       // OK
  };
  </code></pre>
  
  <p>So does it make sense using here the <code>final</code> keyword? In my opinion you can just avoid using the <code>virtual</code> keyword here and prevent <code>f()</code> from being overridden.</p>