什么是类型字段?

我正在学习 C++ 。在“Type Fields我的书”主题下,声明如下:

为了在声明中使用派生类不仅仅是一种方便的简写,我们必须解决以下问题:给定一个类型的指针,所指向Base*的对象真正属于哪个派生类型?这个问题有四种基本的解决方案:

  1. 确保只指向单一类型的对象。
  2. 在基类中放置一个类型字段,供要检查的函数使用。
  3. dynamic_cast
  4. 使用虚函数

我的问题 - 真正的类型字段是什么,段落试图解决的问题是什么?

回答

这本书似乎是在暗示这样的事情:

struct FruitBase
{
protected:
    enum class EFruit
    {
        Apple,
        Plum,
    };

    FruitBase(EFruit type): type{type} {}
    
public:
    EFruit type;
    void prepare()
    {
        if(type == EFruit::Plum)
            extractSeed();
        else if (type == EFruit::Apple)
            peel();
    }
};

struct Apple: public FruitBase
{
    Apple() : FruitBase{EFruit::Apple} {}
};

struct Plum: public FruitBase
{
    Plum() : FruitBase{EFruit::Plum} {}
};

现在,FruitBase::prepare可以根据派生类型进行正确的操作。


以上是什么是类型字段?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>