शुद्ध वर्चुअल फ़ंक्शंस (जब हम = 0
सेट करते हैं) में फ़ंक्शन बॉडी भी हो सकती है।सी ++ शुद्ध वर्चुअल फ़ंक्शन में शरीर
शुद्ध आभासी कार्यों के लिए फ़ंक्शन बॉडी प्रदान करने के लिए क्या उपयोग किया जाता है, अगर उन्हें बिल्कुल नहीं कहा जा रहा है?
शुद्ध वर्चुअल फ़ंक्शंस (जब हम = 0
सेट करते हैं) में फ़ंक्शन बॉडी भी हो सकती है।सी ++ शुद्ध वर्चुअल फ़ंक्शन में शरीर
शुद्ध आभासी कार्यों के लिए फ़ंक्शन बॉडी प्रदान करने के लिए क्या उपयोग किया जाता है, अगर उन्हें बिल्कुल नहीं कहा जा रहा है?
आपकी धारणा है कि शुद्ध वर्चुअल फ़ंक्शन को कॉल नहीं किया जा सकता है बिल्कुल गलत है। जब किसी फ़ंक्शन को शुद्ध वर्चुअल घोषित किया जाता है, तो इसका मतलब यह है कि वर्चुअल प्रेषण तंत्र के माध्यम से इस फ़ंक्शन को गतिशील रूप से नहीं कहा जा सकता है। फिर भी, वर्चुअल प्रेषण के बिना, यह वही कार्य आसानी से स्थिर रूप से कहलाता है।
सी ++ भाषा में वर्चुअल फ़ंक्शन पर स्थैतिक कॉल तब किया जाता है जब कॉल में फ़ंक्शन का एक योग्य नाम उपयोग किया जाता है, यानी जब कॉल में निर्दिष्ट फ़ंक्शन नाम <class name>::<function name>
रूप होता है।
उदाहरण
लिएstruct S {
virtual void foo() = 0;
};
void S::foo() {
// body for the pure virtual function `S::foo`
}
struct D : S {
void foo() {
S::foo(); // static call to `S::foo` from derived class
}
};
int main() {
D d;
d.S::foo(); // another static call to `S::foo`
}
अधिकांश शुद्ध वर्चुअल फ़ंक्शंस के लिए, आप सही होंगे।
(मुझे एहसास है कि यह उत्तर एक वर्ष पुराना है, लेकिन मैंने अभी लोगों को इस प्रश्न के बारे में बताते हुए एक लिंक देखा, इसलिए ...) आपका पहला बिंदु गलत है, शुद्ध आभासी विनाशक एक विनाशक को लागू करने के लिए व्युत्पन्न कक्षाओं को मजबूर नहीं करता है। व्युत्पन्न वर्ग में हमेशा विनाशक होगा, भले ही इसे स्पष्ट रूप से परिभाषित किया गया हो। शुद्ध आभासी विनाशक का एक लाभ एक वर्ग सार बनाना है यदि उसके पास शुद्ध आभासी होने के लिए उपयुक्त कोई अन्य कार्य नहीं है। –
"प्रभावी सी ++" मेयर्स उल्लेख करने के लिए एक शुद्ध आभासी समारोह के लिए एक कारण एक शरीर है: व्युत्पन्न वर्गों है कि इस शुद्ध आभासी समारोह लागू इस कार्यान्वयन उनके कोड में smwhere कह सकते हैं। यदि के कोड का हिस्सा 0 अलग-अलग व्युत्पन्न वर्ग समान है तो इसे पदानुक्रम में ऊपर ले जाने के लिए समझ में आता है, भले ही फ़ंक्शन शुद्ध वर्चुअल होना चाहिए।
here देखें।
[कार्यान्वयन के साथ शुद्ध आभासी समारोह] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation) –
खेद है! मैं इस मंच पर शर्तों के लिए कुछ नया हूँ। मैंने जो जवाब सही महसूस किया है, उसके जवाब स्वीकार कर लिए हैं। सुझावों के लिए धन्यवाद। – Vijay
[कार्यान्वयन के साथ शुद्ध वर्चुअल फ़ंक्शन] का संभावित डुप्लिकेट (https://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation) – finnw