Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 要实现的接口类_C++ - Fatal编程技术网

C++ 要实现的接口类

C++ 要实现的接口类,c++,C++,我来自PHP,如果我没有在基于接口的类中实现方法,我希望得到一条错误消息 class Screen { public: virtual void drawScreen(); // Needs to be implemented by each subclass }; class LanguageScreen : public Screen { // I didn't define the void drawScreen(); }; 因此,我实际上想得到一条消

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

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
中缺失,因为它实现了“接口”类
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()'