重写包含常量的虚成员函数

Overriding virtual member function containing constant

本文关键字:成员 函数 包含 常量 重写      更新时间:2023-10-16

如何重写以下类型的虚成员函数:

virtual AnimalId func(int index) const

其中AnimalIdtypedef unsigned int

我尝试了几种方法,但要么以错误结束,我没有给出输出,要么我根本没有重写。我在一些网站上看到也许我需要使用静态const来实现这个,但我不知道怎么做

为了覆盖签名的方法

virtual AnimalId func(int index) const

在基类Base中声明,您必须在派生类中定义具有相同签名的函数:

class Derived : public Base {
public:
   virtual AnimalId func(int index) const
     {
         return 43;  // I am using 43 because I think this is
                     // so much underestimated in favor of 42
     }
    //...
};

或者您可以键入override关键字以更明确:

class Derived : public Base {
public:
   virtual AnimalId func(int index) const override
     {
         return 43 & 45;
     }
    //...
};

你的意思是:(注意,如果你编译c++ 03,你必须删除override)

typedef unsigned int AnimalId;
class Base
{
public:
    virtual ~Base() {}
    virtual AnimalId func(int index) const { return 0; }
};
class Derived : public Base
{
public:
    AnimalId func(int index) const override { return 42; }
};