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

C++ में क्लास इनहेरिटेंस को कैसे रोकें?

यहां हम देखेंगे कि C++ में इनहेरिटेंस को कैसे रोका जाए। वंशानुक्रम को रोकने की अवधारणा को अंतिम वर्ग के रूप में जाना जाता है।

जावा या सी # में, हम अंतिम कक्षाओं का उपयोग कर सकते हैं। सी ++ में ऐसा कोई सीधा तरीका नहीं है। यहां हम देखेंगे कि C++ में फाइनल क्लास का अनुकरण कैसे किया जाता है।

यहां हम MakeFinalClass नामक एक अतिरिक्त वर्ग बनाएंगे (इसका डिफ़ॉल्ट निर्माता निजी है)। इस फ़ंक्शन का उपयोग हमारे उद्देश्य को हल करने के लिए किया जाता है। मुख्य क्लास MyClass MakeFinalClass के कंस्ट्रक्टर को कॉल कर सकती है क्योंकि वे फ्रेंड क्लास हैं।

हमें एक बात पर ध्यान देना होगा कि MakeFinalClass भी एक वर्चुअल बेस क्लास है। हम इसे वर्चुअल बेस क्लास बनाएंगे क्योंकि हम MyDerivedClass के कंस्ट्रक्टर के माध्यम से MakeFinalClass के कंस्ट्रक्टर को कॉल करना चाहते हैं, न कि MyClass (वर्चुअल बेस क्लास के कंस्ट्रक्टर को उस क्लास द्वारा नहीं कहा जाता है जो इससे इनहेरिट करता है, कंस्ट्रक्टर के बजाय जो कि है कंक्रीट वर्ग के निर्माता द्वारा बुलाया गया)।

उदाहरण

#include <iostream>
using namespace std;
class MyClass;
class MakeFinalClass {
   private:
      MakeFinalClass() {
         cout << "This is constructor of the MakeFinalClass" << endl;
      }
      friend class MyClass;
};
class MyClass : virtual MakeFinalClass { //this will be final class
   public:
      MyClass() {
         cout << "This is constructor of the final Class" << endl;
      }
};
//try to make derived class
class MyDerivedClass : MyClass {
   public:
      MyDerivedClass() {
         cout << "Constructor of the Derived Class" << endl;
      }
};
main() {
   MyDerivedClass derived;
}

आउटपुट

In constructor 'MyDerivedClass::MyDerivedClass()':
[Error] 'MakeFinalClass::MakeFinalClass()' is private

हम MyClass के ऑब्जेक्ट बना सकते हैं क्योंकि यह MakeFinalClass का मित्र है, और इसके कंस्ट्रक्टर्स तक इसकी पहुंच है।

उदाहरण

#include <iostream>
using namespace std;
class MyClass;
class MakeFinalClass {
   private:
      MakeFinalClass() {
         cout << "This is constructor of the MakeFinalClass" << endl;
      }
      friend class MyClass;
};
class MyClass : virtual MakeFinalClass { //this will be final class
   public:
      MyClass() {
         cout << "This is constructor of the final Class" << endl;
      }
};
main() {
   MyClass obj;
}

आउटपुट

This is constructor of the MakeFinalClass
This is constructor of the final Class

  1. C++ में एकाधिक वंशानुक्रम

    एकाधिक वंशानुक्रम तब होता है जब एक वर्ग एक से अधिक आधार वर्ग से विरासत में मिलता है। तो वर्ग एकाधिक वंशानुक्रम का उपयोग करके कई आधार वर्गों से सुविधाओं को प्राप्त कर सकता है। यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे C++ की एक महत्वपूर्ण विशेषता है। एक आरेख जो एकाधिक वंशानुक्रम प्रदर्शित करता

  1. C++ में ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कैसे शुरू करें?

    ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) ऑब्जेक्ट्स की अवधारणा पर आधारित एक प्रोग्रामिंग प्रतिमान है, जिसमें विशेषताओं के रूप में डेटा हो सकता है; और चीजों को करने के निर्देश, विधियों के रूप में। उदाहरण के लिए, एक व्यक्ति एक वस्तु है जिसमें कुछ गुण होते हैं जैसे कि ऊंचाई, लिंग, आयु, आदि। इसके कुछ तरीके

  1. पायथन में क्लास इनहेरिटेंस कैसे काम करता है?

    कक्षाओं में विरासत किसी वर्ग को नए सिरे से परिभाषित करने के बजाय, हम नए वर्ग के नाम के बाद मूल वर्ग को कोष्ठक में सूचीबद्ध करके इसे पहले से मौजूद वर्ग से प्राप्त करके एक वर्ग बना सकते हैं। चाइल्ड क्लास को अपने पैरेंट क्लास की विशेषताएँ विरासत में मिलती हैं, और हम उन एट्रिब्यूट्स का उपयोग इस तरह कर