-1

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

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

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

提前致谢。

4

4 回答 4

5

我对吗 ?

一点都不。

这些是旨在部分形成接口的函数声明。

您的 C++ 书籍中阅读有关纯虚函数的信息。

于 2013-01-31T09:23:34.283 回答
2

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

在第一种情况下,它也是const函数——本质上,你保证不修改函数体中的对象。(具体来说:this函数体中的指针将是const,并且该函数可以在对象上调用const。)第二种情况只是“正常”的纯虚函数声明。

你可以在这里阅读更多关于纯虚函数const 函数的信息

于 2013-01-31T09:25:23.160 回答
1

你错了,=0表示纯虚函数

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

于 2013-01-31T09:23:48.677 回答
0
virtual int getRadioChannel(RadioRef r) const { return 0; }

这就是总是返回 0 的函数的样子。正如其他人指出的那样,将函数等同于 0,使其成为纯虚函数

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

于 2013-01-31T09:25:32.600 回答