c++ - Why is dynamic_cast evil or not ? Should I use dynamic_cast in this case? -
some the use of dynamic_cast means bad design , dynamic_cast can replaced virtual functions
- why use of
dynamic_castconsidered bad design? suppose have function name
func(animal* animal, int animaltype), implementation in func like:bool func(animal* animal, int animaltype) { ... /* animal base class of bear, panda, fish .... dynamic_cast animal real animals(bear, panda, fish...) according animaltype. processing specific type of animal, using additional information beyond base class animal. */ }
is case proper use of dynamic_cast?
this wrong place use dynamic_cast. should using polymorphism. each of animal classes should have virtual function, say, process , here should call animal->process().
class animal{ virtual void process() = 0; } class cat:public animal{ void process() {cout<<" tiny cat";} } class bear :public animal{ void process(){cout<<"i big bear"; } void func(animal* animal){ if(animal != null) animal -> process(); } other problems.
what animal dog, due bug animal_type says cat?
there times when static_cast necessary, , if possible use instead of dynamic cast. dynamic cast has additional performance cost static cast not. this, need sure know type coming in, since static_cast more unsafe.
p.s. @ least, animal_type should member of animal.
Comments
Post a Comment