C++头文件和以"= 0"结尾的函数声明

Ada*_*dam 28 c++ virtual-functions

我在.h文件中有以下代码,我不确定赋值语句的作用是什么以及如何正确调用它?

virtual void yield() = 0;
Run Code Online (Sandbox Code Playgroud)

我认为该函数默认返回值为0,但由于此函数返回void,我有点困惑.任何人都可以对此发表评论并且可能会说我怎么能参考这个赋值,我的意思是如何用C++术语来调用它?

谢谢.

Bjö*_*lex 28

这是一个纯虚函数.这意味着,子类必须实现此函数,否则它们是抽象的,这意味着您无法创建该类的对象.

class ISomeInterface {
public:
    virtual std::string ToString( ) = 0;
}

class SomeInterfaceImpl : public ISomeInterface {
public:
    virtual std::string ToString( ) {
        return "SomeInterfaceImpl";
    }
}
Run Code Online (Sandbox Code Playgroud)

这个想法是,一个类可以暴露某个方法,但是子类必须实现它.在此示例中,ISomeInterface公开了一个ToString方法,但没有合理的默认实现,因此它使该方法纯粹是虚拟的.SomeInterfaceImpl然后,类似的子类可以提供适合的实现.


unw*_*ind 10

= 0语法声明了一个纯虚函数,它无关的返回值.

如果一个类包含至少一个纯虚函数,则使该类为"抽象",这意味着它无法实例化.

实际上,这些类需要通过子类化和实现虚函数来具体化.