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

सी ++ में डिफ़ॉल्ट तर्क और वर्चुअल फ़ंक्शन

आइए अवधारणा को आसानी से समझने के लिए C++ में एक नमूना कार्यक्रम पर विचार करें -

उदाहरण कोड

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s(int a = 0) {
         cout<<" In Base \n";
      }
};
class D: public B {
   public:
      virtual void s(int a) {
         cout<<"In Derived, a="<<a;
      }
};
int main(void) {
   D d; // An object of class D
   B *b= &d;// A pointer of type B* pointing to d
   b->s();// prints"D::s() called"
   return 0;
}
की ओर इशारा करता है

आउटपुट

In Derived, a = 0

इस आउटपुट में, हम देखते हैं कि, व्युत्पन्न वर्ग के s() को कहा जाता है और बेस क्लास s() के डिफ़ॉल्ट मान का उपयोग किया जाता है।

डिफ़ॉल्ट तर्क कार्यों के हस्ताक्षर में भाग नहीं लेते हैं। इसलिए बेस क्लास और व्युत्पन्न वर्ग में s () के हस्ताक्षर समान माने जाते हैं, इसलिए बेस क्लास के s () को ओवरराइड किया जाता है। संकलन समय पर डिफ़ॉल्ट मान का उपयोग किया जाता है। जब कंपाइलर जांचता है कि फ़ंक्शन कॉल में कोई तर्क गुम है, तो यह दिए गए डिफ़ॉल्ट मान को प्रतिस्थापित करता है। इसलिए, उपरोक्त कार्यक्रम में, x के मान को संकलन समय पर प्रतिस्थापित किया जाता है, और रन टाइम पर, व्युत्पन्न वर्ग के s () को कहा जाता है। संकलन समय पर a के मान को प्रतिस्थापित किया जाता है, और रन टाइम पर व्युत्पन्न वर्ग के s() को कहा जाता है।


  1. C++ में निजी और संरक्षित सदस्य

    C++ में एक वर्ग में सार्वजनिक, निजी और संरक्षित अनुभाग होते हैं जिनमें संबंधित वर्ग के सदस्य होते हैं। निजी डेटा सदस्यों को कक्षा के बाहर से एक्सेस नहीं किया जा सकता है। उन्हें केवल क्लास या फ्रेंड फंक्शन्स द्वारा ही एक्सेस किया जा सकता है। डिफ़ॉल्ट रूप से कक्षा के सभी सदस्य निजी होते हैं। एक वर्ग

  1. C++ में फ्रेंड क्लास और फंक्शन

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

  1. डिफ़ॉल्ट वर्चुअल व्यवहार C++ और Java में कैसे भिन्न होता है?

    सी ++ में, क्लास सदस्य विधियां डिफ़ॉल्ट रूप से गैर-आभासी होती हैं। इसका मतलब है, उन्हें निर्दिष्ट करके वर्चुअल बनाया जा सकता है। दूसरी ओर, जावा में, विधियां डिफ़ॉल्ट रूप से आभासी होती हैं, और उन्हें अंतिम कीवर्ड की सहायता से गैर-आभासी बनाया जा सकता है। उदाहरण class base_class{    public v