51

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

virtual void yield() = 0;

我认为该函数默认返回值 0 但由于该函数返回 void 我有点困惑。任何人都可以对此发表评论,也许会说我如何引用这个作业,我的意思是它在 C++ 行话中是如何调用的?

谢谢。

4

4 回答 4

43

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

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

class SomeInterfaceImpl : public ISomeInterface {
public:
    virtual std::string ToString( ) {
        return "SomeInterfaceImpl";
    }
}

这个想法是,一个类可以公开某个方法,但子类必须实现它。在此示例中,ISomeInterface公开了一个ToString方法,但没有合理的默认实现,因此它使该方法成为纯虚拟方法。像这样的子类SomeInterfaceImpl可以提供合适的实现。

于 2010-03-26T12:34:27.633 回答
18

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

如果一个类包含至少一个纯虚函数,则使该类“抽象”,这意味着它不能被实例化。

在实践中,这些类需要通过子类化和实现虚函数来具体化。

于 2010-03-26T12:35:01.843 回答
3

如果是纯虚拟方法(又名抽象)看这里或谷歌http://www.artima.com/cppsource/pure_virtual.html

= 0 不代表默认返回值,通知函数是纯虚函数

于 2010-03-26T12:35:00.033 回答
0

语法晦涩难懂,但“=0”表示该方法是纯虚函数。它使类抽象(你不能实例化它),它的实现留给派生类。

当您只想定义一个接口时使用它。当您要定义接口并提供默认实现时,请使用 virtual 关键字。

于 2010-03-26T12:44:21.483 回答