我在.h文件中有以下代码,我不确定赋值语句的作用是什么以及如何正确调用它?
virtual void yield() = 0;
我认为该函数默认返回值为0,但由于此函数返回void,我有点困惑。任何人都可以评论这个并且可能会说我怎么能参考这个赋值,我的意思是如何用C ++术语来调用它?
感谢。
答案 0 :(得分:25)
这是一个纯虚函数。这意味着,子类必须实现此函数,否则它们是抽象的,这意味着您无法创建该类的对象。
class ISomeInterface {
public:
virtual std::string ToString( ) = 0;
}
class SomeInterfaceImpl : public ISomeInterface {
public:
virtual std::string ToString( ) {
return "SomeInterfaceImpl";
}
}
这个想法是,一个类可以公开某个方法,但是子类必须实现它。在此示例中,ISomeInterface
公开了ToString
方法,但没有合理的默认实现,因此它使该方法纯虚拟。像SomeInterfaceImpl
这样的子类可以提供合适的实现。
答案 1 :(得分:9)
= 0
语法声明pure virtual function,它与返回值无关。
如果一个类包含至少一个纯虚函数,则该类使其成为“抽象”,这意味着它无法实例化。
实际上,这些类需要通过子类化和实现虚函数来具体化。
答案 2 :(得分:3)
如果是纯虚拟方法(又名抽象),请查看此处或google http://www.artima.com/cppsource/pure_virtual.html
= 0并不意味着默认返回值,它是通知功能是纯虚拟的
答案 3 :(得分:0)
语法模糊,但“= 0”表示该方法是纯虚函数。它使类抽象(你不能实例化它),它的实现留给派生类。
当您要定义的所有内容都是接口时使用。如果要定义接口,请使用virtual关键字,并提供默认实现。