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

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; // क्लास D का एक ऑब्जेक्ट    B *b= &d;// d को इंगित करने वाला B* टाइप का पॉइंटर    b->s();// प्रिंट करता है "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 में डिफ़ॉल्ट वर्चुअल व्यवहार कैसे भिन्न होता है?

    परिचयC++ में, क्लास मेंबर मेथड्स डिफ़ॉल्ट रूप से नॉन-वर्चुअल होते हैं। इसका मतलब है, उन्हें वर्चुअल बनाने के लिए इसे निर्दिष्ट किया जा सकता है।दूसरी ओर, Java में, मेथड्स डिफ़ॉल्ट रूप से वर्चुअल होते हैं, और final कीवर्ड की मदद से नॉन-वर्चुअल बनाए जा सकते हैं।उदाहरणclass BaseClass{ public void di