如果在派生类中将基类函数声明为非虚函数,而基类函数是虚函数,为什么在通过指针调用该函数时会触发 vtable 查找?该函数从作用域中已经很明确了。
如果在派生类中将基类函数声明为非虚函数,而基类函数是虚函数,为什么在通过指针调用该函数时会触发 vtable 查找?该函数从作用域中已经很明确了。
virtual
,则该方法在派生类中也是虚拟的,即使省略了 virtual
关键字。但是出于文档目的,在我看来重复还是有好处的。您无法将一个函数变为非虚函数,因此它仍然是虚函数,并且对该函数的调用通常也是虚函数调用。当然,在某些情况下,编译器可以优化并进行直接调用,但显然在您的情况下不行。
创建虚方法以影响派生类(当您将方法标记为虚方法时,它将在派生类上使用虚表)。并且重写的方法将是虚方法。
virtual
关键字。