Derived1和Derived2继承自Base,而没有类继承自Derived1和Derived2。 在下面声明的类中,通过在成员函数foo()的声明中不使用关键字“virtual”,我能够减少一个间接级别吗?或者更具体地说,Derived2 :: foo()函数的性能优于Derived1 :: foo()的性能?
class Base{
public:
virtual void foo();
}
class Derived1: public Base{
public:
virtual void foo();
}
class Derived2: public Base{
public:
void foo();
}
答案 0 :(得分:2)
不,没有区别。
关键字virtual
在派生类中是可选的。如果函数在基类中是虚函数,那么它在所有派生类中也是虚拟的。
答案 1 :(得分:1)
不,由于Base::foo
是virtual
,因此在派生类中使用virtual
并不重要。无论您是否使用virtual
关键字,它都将是一个虚拟函数。