dynamic_cast im Vergleich zur Bereitstellung virtueller Funktionen in der übergeordneten Klasse (C ++)

Ich habe eine Elternklasse "base" und eine andere Klasse "deriviert", die von "base" erbt.

"abgeleitet" hat 1 Methode cH1.

wenn ich das mache:

base* b = new derived();

Und das möchte ich können:

b->cH1();

Offensichtlich kann ich nicht und es gibt 2 Lösungen:

Deklarieren Sie entweder cH1 als pure virtual in base.

oder mach das:

dynamic_cast<derived*>(b)->cH1();

Welches ist eine bessere Praxis?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage