virtual function const vs virtual function non-const

前端 未结 3 1576
自闭症患者
自闭症患者 2020-12-14 09:28
class Base
{
   public:
   virtual void func() const
   {
     cout<<\"This is constant base \"<

        
3条回答
  •  独厮守ぢ
    2020-12-14 10:12

    virtual void func() is actually of a different signature than virtual void func() const. Thus you didn't override your original, read-only base function. You ended up creating a new virtual function instead in Derived.

    You can also learn more about this if you ever try to create pointers to member functions (PTMFs), but that's a rare necessity (might be good for study or practice, however).

    The override keyword in C++11 is particularly handy to help avoid these kinds of mistakes. The compiler would then tell you that your definition of 'func' in derived does not override anything.

提交回复
热议问题