繁体   English   中英

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

[英]C++ header file and function declaration ending in “= 0”

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

virtual void yield() = 0;

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

谢谢。

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

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

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

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

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

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

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

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

= 0并不意味着默认返回值,它是通知功能是纯虚拟的

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

当您要定义的所有内容都是接口时使用。 如果要定义接口,请使用virtual关键字,并提供默认实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM