Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में प्योर वर्चुअल फंक्शन्स और एब्स्ट्रैक्ट क्लासेस


प्योर वर्चुअल फंक्शन C++ में एक वर्चुअल फंक्शन है जिसके लिए हमें कोई फंक्शन डेफिनिशन लिखने की आवश्यकता नहीं है और केवल इसे डिक्लेयर करना है। इसे डिक्लेरेशन में 0 असाइन करके डिक्लेयर किया जाता है।

एक एब्स्ट्रैक्ट क्लास C++ में एक ऐसी क्लास है जिसमें कम से कम एक प्योर वर्चुअल फंक्शन होता है।

  • एब्स्ट्रैक्ट क्लास में नॉर्मल फंक्शन्स और वेरिएबल्स के साथ एक प्योर वर्चुअल फंक्शन हो सकता है।

  • एब्स्ट्रैक्ट क्लास को इंस्टेंटिएट नहीं किया जा सकता, लेकिन एब्स्ट्रैक्ट क्लास टाइप के पॉइंटर्स और रेफरेंस बनाए जा सकते हैं।

  • एब्स्ट्रैक्ट क्लासेस का उपयोग मुख्य रूप से अपकास्टिंग के लिए किया जाता है, ताकि इसकी डेराइव्ड क्लासेस इसके इंटरफेस का उपयोग कर सकें।

  • यदि एब्स्ट्रैक्ट क्लास की डेराइव्ड क्लास है, तो उन्हें सभी प्योर वर्चुअल फंक्शन्स को लागू करना होगा, अन्यथा वे भी एब्स्ट्रैक्ट बन जाएंगी।

  • हम एब्स्ट्रैक्ट क्लास का ऑब्जेक्ट नहीं बना सकते क्योंकि हम Vtable में प्योर वर्चुअल फंक्शन के लिए एक स्लॉट रिजर्व करते हैं, लेकिन कोई एड्रेस नहीं डालते, इसलिए Vtable अधूरा रहता है।

उदाहरण कोड

#include<iostream> using namespace std; class B {    public:       virtual void s() = 0; // प्योर वर्चुअल फंक्शन }; class D:public B {    public:       void s() {          cout << "Virtual Function in Derived class\n";       } }; int main() {    B *b;    D dobj;    b = &dobj;    b->s(); }

आउटपुट

Virtual Function in Derived class

  1. - C# में virtual और abstract फ़ंक्शन के बीच अंतर क्या है?

    Abstract विधियां कार्यान्वयन प्रदान नहीं करतीं और वे व्युत्पन्न वर्गों को विधि ओवरराइड करने के लिए बाध्य करती हैं। यह abstract क्लास के तहत घोषित होती है। एक abstract विधि में केवल विधि परिभाषा होती है। Virtual विधियों का एक कार्यान्वयन होता है, abstract विधि के विपरीत, और यह abstract और गैर-abstrac

  1. - C# में एब्स्ट्रैक्ट क्लासेस

    C# में एक एब्स्ट्रैक्ट क्लास में एब्स्ट्रैक्ट और नॉन-एब्स्ट्रैक्ट दोनों मेथड्स शामिल होते हैं। एक क्लास को एब्स्ट्रैक्ट घोषित किया जाता है ताकि वह एब्स्ट्रैक्ट क्लास बन सके। आप एब्स्ट्रैक्ट क्लास को इंस्टेंटिएट नहीं कर सकते। आइए एक उदाहरण देखें, जहाँ हमारे पास एक एब्स्ट्रैक्ट क्लास Vehicle और एब्स

  1. - स्काला में ट्रेट्स और एब्स्ट्रैक्ट क्लासेस के बीच अंतर

    ट्रेट्स (Traits) ट्रेट्स जावा में इंटरफेस के समान होते हैं और trait कीवर्ड का उपयोग करके बनाए जाते हैं। एब्स्ट्रैक्ट क्लास (Abstract Class) एब्स्ट्रैक्ट क्लास जावा में एब्स्ट्रैक्ट क्लासेस के समान होती है और abstract कीवर्ड का उपयोग करके बनाई जाती है। उदाहरण स्काला में ट्रेट्स और एब्स्ट्रैक्ट क्ला