我不确定我对这些说明的解释:
virtual int getRadioChannel(RadioRef r) const = 0;
virtual int getNumChannels() = 0;
对我来说,第一个意味着函数 getRadioChannel 的调用总是返回 0,而第二个在调用函数 getNumChannels 时什么也不做。我对吗 ?
提前致谢。
我不确定我对这些说明的解释:
virtual int getRadioChannel(RadioRef r) const = 0;
virtual int getNumChannels() = 0;
对我来说,第一个意味着函数 getRadioChannel 的调用总是返回 0,而第二个在调用函数 getNumChannels 时什么也不做。我对吗 ?
提前致谢。
这些都是声明纯虚函数;在声明它们的类中没有定义的函数。由于没有函数的定义,因此无法实例化该类;只有定义了这些函数的类的子类才可以。
在第一种情况下,它也是const
函数——本质上,你保证不修改函数体中的对象。(具体来说:this
函数体中的指针将是const
,并且该函数可以在对象上调用const
。)第二种情况只是“正常”的纯虚函数声明。
你可以在这里阅读更多关于纯虚函数和const 函数的信息。
你错了,=0
表示纯虚函数。
这使得类抽象并强制所有非抽象派生类实现标记为纯的方法。
virtual int getRadioChannel(RadioRef r) const { return 0; }
这就是总是返回 0 的函数的样子。正如其他人指出的那样,将函数等同于 0,使其成为纯虚函数。
纯虚函数或纯虚方法是派生类需要实现的虚函数,如果该类不是抽象的。包含纯虚方法的类称为“抽象”;它们不能直接实例化。只有当所有继承的纯虚方法都由该类或父类实现时,才能直接实例化抽象类的子类。