पिछले हफ्तों में कुछ मेरे दिमाग को वर्चुअल और ओवरराइड के बारे में बता रहा है। मैंने सीखा है कि जब आप वर्चुअल फ़ंक्शन के साथ विरासत करते हैं तो आपको virtual
जोड़ना होगा ताकि संकलक सही कार्य की खोज कर सकें। बाद में मैंने यह भी सीखा कि सी ++ 11 में एक नया कीवर्ड है - ओवरराइड। अब मैं थोड़ा उलझन में हूँ; क्या मुझे अपने प्रोग्राम में वर्चुअल और ओवरराइड कीवर्ड दोनों का उपयोग करने की आवश्यकता है, या उनमें से केवल एक का उपयोग करना बेहतर है?आभासी? ओवरराइड? अथवा दोनों? सी ++
अपने आप व्याख्या करने के लिए - मैं क्या मतलब है की कोड उदाहरण:
class Base
{
public:
virtual void print() const = 0;
virtual void printthat() const = 0;
virtual void printit() const = 0;
};
class inhert : public Base
{
public:
// only virtual keyword for overriding.
virtual void print() const {}
// only override keyword for overriding.
void printthat() const override {}
// using both virtual and override keywords for overriding.
virtual void printit() const override {}
};
सबसे अच्छा तरीका क्या है?
जब भी आप किसी विधि को ओवरराइड करना चाहते हैं तो आपको 'ओवरराइड' कीवर्ड का उपयोग करना चाहिए। इस तरह, अगर आप व्युत्पन्न वर्ग में नाम गलत टाइप, तो आपको एक त्रुटि कह मिल जाएगा वहाँ था कोई तरीका – Eric
ओवरराइड करने के लिए मिल गया (http [ 'ओवरराइड' कीवर्ड सिर्फ एक ओवरराइड आभासी विधि के लिए एक जांच है?]: // stackoverflow.com/questions/13880205/is-the-override-keyword-just-a-check-for-a-overriden-virtual-method) – Solarflare
एक और दिलचस्प सवाल यह है कि "क्या होता है यदि मैं वर्चुअल के बिना ओवरराइड का उपयोग करता हूं" – Eric