一个虚函数头后跟一个语句

时间:2013-01-31 09:22:44

标签: c++

我不确定我对这些说明的解释:

virtual int getRadioChannel(RadioRef r) const = 0;
virtual int getNumChannels() = 0;

对我来说,第一个意味着函数getRadioChannel的调用总是返回0而第二个函数在调用函数getNumChannels时什么也不做。 我是对的吗?

提前致谢。

4 个答案:

答案 0 :(得分:5)

  

我是对的吗?

不,完全没有。

这些是用于部分构成接口的函数声明。

your C++ book中了解纯虚函数

答案 1 :(得分:2)

这些都是声明纯虚拟功能;在声明它们的类中没有定义的函数。由于没有函数的定义,因此无法实例化类;只有定义了这些函数的类的子类才可以。

在第一种情况下,它也是const函数 - 基本上,你承诺不修改函数体中的对象。 (具体来说:函数体中的this指针将为const,并且该函数可在const个对象上调用。)第二种情况只是一个“普通”纯虚函数声明。

您可以详细了解pure virtual functions hereconst functions here

答案 2 :(得分:1)

你不对,=0表示纯虚函数

这使得类抽象化并强制所有非抽象派生类实现标记为纯的方法。

答案 3 :(得分:0)

virtual int getRadioChannel(RadioRef r) const { return 0; }

这是一个总是返回0的函数。正如其他人所指出的那样,将函数等同于0,使其成为pure virtual function

  

纯虚函数或纯虚方法是一个虚函数,如果该类不是抽象类,则需要由派生类实现。包含纯虚方法的类称为“抽象”;它们无法直接实例化。如果所有继承的纯虚方法已由该类或父类实现,则只能直接实例化抽象类的子类。