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

शुद्ध आभासी कार्य और सी++ में सार कक्षाएं


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

एक अमूर्त वर्ग C++ में एक वर्ग है जिसमें कम से कम एक शुद्ध आभासी कार्य होता है।

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

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

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

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

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

उदाहरण कोड

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s() = 0; // Pure Virtual Function
};

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. सी # में आभासी और अमूर्त कार्यों के बीच क्या अंतर है?

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

  1. सी # में सार कक्षाएं

    C# में एक अमूर्त वर्ग में अमूर्त और गैर-सार विधियां शामिल हैं। एक वर्ग को अमूर्त वर्ग के रूप में अमूर्त घोषित किया जाता है। आप एक अमूर्त वर्ग को तत्काल नहीं कर सकते। आइए एक उदाहरण देखते हैं, जिसमें हमारे पास एक एब्स्ट्रैक्ट क्लास व्हीकल और एब्स्ट्रैक्ट मेथड डिस्प्ले ()- है। public abstract class Veh

  1. स्कैला में लक्षणों और सार वर्गों के बीच अंतर।

    लक्षण लक्षण जावा में इंटरफेस के समान हैं और विशेषता कीवर्ड का उपयोग करके बनाए गए हैं। सार वर्ग एब्सट्रैक्ट क्लास जावा में एब्सट्रैक्ट क्लासेस के समान है और इसे एब्सट्रैक्ट कीवर्ड का उपयोग करके बनाया गया है। उदाहरण स्काला में लक्षणों और सार वर्गों के उपयोग को दिखाने के लिए निम्नलिखित कार्यक्रम है।