2012-02-14 9 views
12

संभव डुप्लिकेट:
Why pure virtual function is initialized by 0?"= 0;" क्या करता है सी ++ में शुद्ध आभासी कार्यों की घोषणा करते समय करते हैं?

मुझे पता है कि, क्रम में एक शुद्ध आभासी समारोह आप उपयोग करने की आवश्यकता की घोषणा करने में "= 0;" वाक्य रचना है, तो जैसे:

class Foo 
{ 
protected: 
    Foo(); 
    virtual int getValue() = 0; 
}; 

मेरे सवाल है, वास्तव में क्या (संकलक की आंतरिक कार्यप्रणाली में) करता है "= 0;" वाक्यविन्यास करते हैं? क्या यह वास्तव में शून्य के बराबर फ़ंक्शन पॉइंटर सेट करता है? क्या यह इरादे के एक बयान से ज्यादा कुछ नहीं करता है, जैसे कि जावा और सी # में "अमूर्त" आरक्षित शब्द, और यदि हां, तो ऐसे आर्केन सिंटैक्स का उपयोग करने के बजाय भाषा में "अमूर्त" जैसे आरक्षित शब्द क्यों नहीं जोड़ते?

+0

इस प्रश्न का उत्तर दिया गया है [यहां] (http://stackoverflow.com/questions/2156634/why-pure-virtual-function-is-initialized-by-0)। – Nerdtron

+6

क्योंकि 'शुद्ध' कीवर्ड सी ++ प्रोग्रामर के लिए बहुत पठनीय होगा। – orlp

+0

@nightcracker: Bjarne Stroustrup प्रासंगिक खोजशब्दों से सावधान है (यानी, पहचानकर्ता जो केवल कुछ संदर्भों में कीवर्ड हैं और दूसरों को नहीं) और ठीक है क्योंकि यह थोड़ा और कठिन बनाता है (यानी आप यह नहीं कह सकते कि कोई विशेष पहचानकर्ता कोई कीवर्ड है या नहीं इसके संदर्भ के बिना नहीं)। मैं इसके लिए इसे दोष नहीं दे सकता। हालांकि वह पूर्ण खोजशब्दों को पेश करने से भी सावधान है, और इससे उन सभी अजीब उपयोग ('स्थिर '!!!!) उत्पन्न होते हैं। –

उत्तर

1

यह 'शुद्ध वर्चुअल' फ़ंक्शन घोषित करता है। = 0 मूल रूप से एक और 'शुद्ध' कीवर्ड की तरह है। यह सवाल तुम्हारा से संबंधित है: Why is a pure virtual function initialized by 0?

एक शुद्ध आभासी समारोह सब पर कोई शरीर है और किसी भी वर्ग है जो यह वारिस द्वारा परिभाषित किया जाना चाहिए: http://www.learncpp.com/cpp-tutorial/126-pure-virtual-functions-abstract-base-classes-and-interface-classes/

0

का प्रतीक है यही कारण है कि वहाँ कोई "डिफ़ॉल्ट" कार्यान्वयन। किसी व्युत्पन्न वर्ग को इसे लागू करने की आवश्यकता है।

+1

ध्यान दें कि शुद्ध आभासी कार्यों में कार्यान्वयन हो सकता है। – Griwes

0

यह आपको इसे बाल वर्ग में परिभाषित करने के लिए मजबूर करता है।

संबंधित मुद्दे