gpt4 book ai didi

c++ - 要实现的接口(interface)类

转载 作者:行者123 更新时间:2023-12-01 14:39:59 24 4
gpt4 key购买 nike

我来自 PHP,如果我没有在基于接口(interface)的类中实现方法,我希望收到一条错误消息。

class Screen {
public:
virtual void drawScreen(); // Needs to be implemented by each subclass
};
class LanguageScreen : public Screen {
// I didn't define the void drawScreen();
};

所以我实际上想得到一个消息,方法 drawScreen()类中缺少 LanguageScreen因为它实现了“接口(interface)”类 Screen .还是这与 PHP 不同?

最佳答案

你想要的是一个纯虚函数。

区别:

  • 虚拟:我会实现它,但你可以覆盖它
  • 纯虚拟:我会定义它,但你必须实现它

  • 要使虚函数成为纯虚函数,只需将其赋值为 0:
    class Screen {
    public:
    virtual void drawScreen() = 0; // Needs to be implemented by each subclass
    };
    class LanguageScreen : public Screen {
    // I didn't define the void drawScreen();
    };

    当您尝试使用它时会导致这种情况(“使用”是指尝试直接从子类实例化一个对象):
    error: cannot declare variable 'foo' to be of abstract type 'LanguageScreen'                  
    note: because the following virtual functions are pure within 'LanguageScreen':
    note: 'virtual void Screen::drawScreen()'

    关于c++ - 要实现的接口(interface)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59850008/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com