dynamic_cast vs ujawnianie funkcji wirtualnych w klasie nadrzędnej (C ++)

Mam klasę macierzystą „base” i inną klasę „wyprowadzoną”, która dziedziczy z „bazy”.

„pochodna” ma 1 metodę cH1.

jeśli to zrobię:

base* b = new derived();

I chcę móc to zrobić:

b->cH1();

Oczywiście nie mogę i są 2 rozwiązania:

Albo zadeklaruj cH1 jako czysty wirtualny w bazie.

lub zrób to:

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

Która z nich jest lepszą praktyką?

questionAnswers(3)

yourAnswerToTheQuestion