निम्न कोड में downcasting, जबकि case 1
में obj
के निर्माण हम किसी भी कैसे derived
वर्ग भी बनाएगी लेकिन यह सदस्य कार्यों सिर्फ obj
के लिए दुर्गम हैं। तो नीचे - कास्टिंग (यानी, 2 मामले में), obj
का उपयोग स्रोत के रूप में करते हुए, हम किसी भी प्रकार का निर्माण derived
बनाते हैं। obj
को पॉलिमॉर्फिक की आवश्यकता क्यों होगी?सी ++ dynamic_cast - बहुरूपी आवश्यकता और
यदि मैंने आपको उपर्युक्त विवरण के साथ भ्रमित किया है, तो क्यों उग्र obj
को पॉलिमॉर्फिक होने की आवश्यकता नहीं है, लेकिन dynamic_cast
का उपयोग करते समय डाउनकास्ट होने की आवश्यकता है?
class base
{
public:
base()
{
cout<< " \n base constructor \n";
}
};
class derived:public base
{
public:
derived()
{
cout <<" \n derived constructor \n";
}
};
base *obj = dynamic_cast<base*> (new derived) ; // case 1: explicitly upcasting
derived *OBJ = dynamic_cast<derived*> (obj) ; // case 2: error
धन्यवाद।
कुछ स्पष्ट नहीं है अगर मैं स्पष्ट रूप से अपवाद करता हूं, जो मानक दस्तावेज़ों में स्पष्ट रूप से कहता है। – Mahesh