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;// B* टाइप का एक पॉइंटर जो d की ओर इशारा करता है    b->s();// prints"D::s() called"    return 0; }

आउटपुट

In Derived, a=0

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

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


  1. - C/C++ में फॉरवर्ड डिक्लेरेशन का उपयोग कब कर सकते हैं?

    फॉरवर्ड डिक्लेरेशन डिक्लेरेशन के बाद के कोड को यह जानने देता है कि Person नाम की क्लासेस हैं। यह कंपाइलर को संतुष्ट करता है जब यह इन नामों को उपयोग होते देखता है। बाद में लिंकर क्लासेस की परिभाषा ढूंढ लेगा। उदाहरण Class Person; void myFunc(Person p1) {    // ... } Class Person {   &

  1. - C# में एक क्लास में कितने डिस्ट्रक्टर हो सकते हैं?

    C# में, डिस्ट्रक्टर एक क्लास का विशेष मेथड है और इसका उपयोग क्लास के अंदर ऑब्जेक्ट या क्लास के इंस्टेंस को नष्ट करने के लिए किया जाता है। एक क्लास के अंदर केवल एक डिस्ट्रक्टर हो सकता है। C# में डिस्ट्रक्टर के निम्नलिखित गुण हैं: डिस्ट्रक्टर कोई पैरामीटर नहीं लेते। डिस्ट्रक्टर टिल्ड सिंबल (~) से शु

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

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