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