मैं हमेशा पॉलिमॉर्फिज्म के लिए पॉइंटर्स का उपयोग करने के बारे में सोचता हूं। कैनोलिक उदाहरण का उपयोग करना:क्या पॉलीमोर्फिज्म के संबंध में संदर्भ और पॉइंटर्स बराबर हैं?
DrawEngine::render(Shape *shape)
{
shape->draw();
shape->visible(true);
}
और विभिन्न आकार व्युत्पन्न कक्षाओं में पॉइंटर में गुजरना। क्या यह संदर्भों के साथ ही काम करता है?
engine.render(myTriangle); // myTriangle instance of class derived from Shape
इस काम करता है, वहाँ दो मामलों के बीच कोई अंतर है:
DrawEngine::render(Shape &shape)
{
shape.draw();
shape.visible(true);
}
यह करने के लिए भी मान्य है? मैंने स्ट्राउस्ट्रप में जानकारी खोजने की कोशिश की, लेकिन मुझे कुछ भी नहीं मिला।
मैंने इसे फिर से खोल दिया क्योंकि मैं सिर्फ एक और अधिक खोजना चाहता था।
तो कम से कम एक अंतर गतिशील_कास्ट है। मेरे लिए, बहुरूपता में गतिशील_कास्ट का उपयोग शामिल है।
मैं
Rhomboid & r = dynamic_cast<Rhomboid &>(shape);
जा सकते हैं अगर कलाकारों में विफल रहता है तो क्या होगा? क्या यह कोई अलग है?
Rhomboid * r = dynamic_cast<Rhomboid*>(&shape);
@ pm100:। सीधे, सुनिश्चित करें, लेकिन वहाँ विभिन्न पहलुओं हैं। उदाहरण के लिए, 'dynamic_cast' एक खराब कलाकार पर वापस लौटने के बजाय अपवाद फेंक देगा। – GManNickG
@GMan: मैं पॉइंटर्स और संदर्भों के बीच मूल अंतर के रूप में 'dynamic_cast' उदाहरण के बारे में सोचता हूं: पॉइंटर्स कानूनी रूप से नल हो सकते हैं, जबकि संदर्भ नहीं हो सकते हैं। प्रश्न के दिल, जैसा कि मैंने इसे पढ़ा है, यह है कि वर्चुअल टेबल के संबंध में संदर्भ समान व्यवहार करते हैं या नहीं। इसलिए संक्षिप्त जवाब। –
जिस तरह से मैं इसे देखता हूं, संदर्भ पॉइंटर्स के शीर्ष पर वाक्य रचनात्मक चीनी से थोड़ा अधिक प्रतीत होता है। –