Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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++ में स्थानीय वर्ग के रूप में जाना जाता है क्योंकि यह उस फ़ंक्शन के लिए स्थानीय होता है। स्थानीय वर्ग का एक उदाहरण इस प्रकार दिया गया है। #include<iostream> using namespace std; void func() {    class LocalClass {    }; } int main()

  1. जावा में अंतिम कक्षा

    किसी वर्ग को अंतिम घोषित करने का मुख्य उद्देश्य वर्ग को उपवर्ग होने से रोकना है। यदि किसी वर्ग को अंतिम के रूप में चिह्नित किया जाता है तो कोई भी वर्ग अंतिम वर्ग से किसी भी विशेषता को प्राप्त नहीं कर सकता है। public final class Test {    // body of class }