我被告知如果类成员函数的解除以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;
};
答案 0 :(得分:1)
纯虚函数是一个要在派生类中重写和使用的函数。语法是:
return_type func_name (param_list) = 0;
这使您的函数纯虚拟,您的类抽象。包含此类函数的类无法实例化,并且该函数不能具有正文。
const
表示此函数无法修改包含它的类的任何其他成员。
答案 1 :(得分:0)
= 0
表示该方法为pure virtual。
这意味着该类无法实例化,并且从该类继承的类必须为该方法提供实现,否则这些类也将是虚拟的(并且无法实例化)。