(现在重新编辑,不重复)为什么有些虚拟成员函数不使用虚拟关键字?

时间:2015-12-19 13:16:53

标签: c++ function const virtual abstract

我被告知如果类成员函数的解除以virtual关键字开头并以=0结束,那么此函数将是一个虚函数,它所属的类将是一个抽象类(所有成员函数都是虚函数,然后是一个接口)。但我也发现某些类是使用const=0声明的,但没有virtual个关键字。

所以我想知道以下两个类是否相同?如果是这样,为什么有些人使用virtual而其他人没有。如果没有,那么他们的差异是什么?

class class1 {
   int function1() const = 0;
   int function2() const = 0;
   ...
};

class class2 {
    virtual int function1() const = 0;
    virtual int function2() const = 0;
};

2 个答案:

答案 0 :(得分:1)

纯虚函数是一个要在派生类中重写和使用的函数。语法是:

return_type func_name (param_list) = 0;

这使您的函数纯虚拟,您的类抽象。包含此类函数的类无法实例化,并且该函数不能具有正文。

const表示此函数无法修改包含它的类的任何其他成员。

答案 1 :(得分:0)

= 0表示该方法为pure virtual

这意味着该类无法实例化,并且从该类继承的类必须为该方法提供实现,否则这些类也将是虚拟的(并且无法实例化)。