Ich verstehe, dass C++ Laufzeitpolymorphismus durch virtuelle Funktionen implementiert und dass virtuelles Schlüsselwort vererbt wird, aber ich sehe keine Verwendung von virtuellen Schlüsselwort in abgeleiteten Klasse.Verwendung von virtuellen Schlüsselwörtern in C++
z.B. Im unteren Fall, selbst wenn Sie das virtuelle Schlüsselwort in der abgeleiteten Klasse gelöscht haben, geht der Aufruf von ptr-> method() zu abgeleiteten :: method. Also, was dieses virtuelle Schlüsselwort in abgeleiteten Klasse tut?
#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;
}
Wie Sie gesehen haben, ist es redundant. – BoBTFish
@ Nbr44 würden Sie keine Antwort von diesem Kommentar machen – triclosan
'virtual' ist in der abgeleiteten Klasse implizit beim Überschreiben einer virtuellen Funktion in der Basisklasse. C++ 11 führt auch das Schlüsselwort final ein, das verhindert, dass weitere abgeleitete Klassen die virtuelle Funktion erneut implementieren. – dunc123