कुछ the use of dynamic_cast often means bad design and dynamic_cast can be replaced by virtual functions
गतिशील_कास्ट बुरा क्यों है या नहीं? क्या मुझे इस मामले में गतिशील_कास्ट का उपयोग करना चाहिए?
- क्यों
dynamic_cast
के उपयोग पर विचार कर रहा है बुरा डिजाइन कहते हैं? मान लीजिए मैं मैं नाम
func(Animal* animal, int animalType)
ढंग से काम किया है, समारोह में कार्यान्वयन की तरह है:bool func(Animal* animal, int animalType) { ... /* Animal is the base class of Bear, Panda, Fish .... dynamic_cast animal to real animals(Bear, Panda, Fish...) according to animalType. Do some processing with this specific type of animal, using its additional information beyond base class Animal. */ }
इस मामले dynamic_cast
के समुचित उपयोग है?
' dynamic_cast' "बुरा" है क्योंकि यह धीमा/ओवरकिल है। इसके अलावा, उस टूल का उपयोग करें जो आपकी समस्या हल करता है। कहानी का अंत। – Mehrdad
गतिशील बहुरूपता और विशेष रूप से आभासी कार्यों का पूरा बिंदु यह है कि आपको * सटीक * प्रकार की देखभाल करने की आवश्यकता नहीं है, लेकिन केवल यह जानना है कि यह * कुछ प्रकार * बेस प्रकार * है जो एक प्रदान करता है कुछ इंटरफ़ेस, हालांकि इसे विशेष * व्युत्पन्न प्रकार * द्वारा कार्यान्वित किया जा सकता है। 'dynamic_cast' सरल कारण के लिए" खराब डिज़ाइन "है कि यह इस उद्देश्य का उल्लंघन करता है, क्योंकि आपको * * ऑब्जेक्ट को * * व्युत्पन्न प्रकार * होने की आवश्यकता है, इसलिए इसे * बेस प्रकार * जानने के लिए पर्याप्त नहीं है। ऐसा कहा जा रहा है कि इसका अभी भी इसका उपयोग है (विशेष रूप से दुनिया जितनी सरल नहीं है * जावा * इसे पसंद करती है)। –