我知道C++通過虛擬函數實現運行時多態,並且虛擬關鍵字被繼承,但在派生類中沒有看到使用虛擬關鍵字。在C++中使用虛擬關鍵字
例如在下面的情況下,即使您在派生類中放棄了virtual關鍵字,仍然使用ptr-> method()調用去派生::方法。那麼這個虛擬關鍵字在派生類中做了多少額外的工作?
#include<iostream>
using namespace std;
class base
{
public:
virtual void method()
{
std::cout << std::endl << "BASE" << std::endl;
}
};
class derived: public base
{
public:
virtual void method()
{
std::cout << std::endl << "DERIVED" << std::endl;
}
};
int main()
{
base* ptr = new derived();
ptr->method();
return 9;
}
正如你所看到的,它是多餘的。 – BoBTFish
@ Nbr44你不會回答這個評論嗎 – triclosan
當覆蓋基類中的虛函數時,'virtual'在派生類中被隱含。 C++ 11還引入了「final」關鍵字,它可以防止進一步的派生類重新實現虛函數。 – dunc123