2010-11-14 20 views
6

Possible Duplicate:
casting unused return values to voidसी ++ रद्द करने का उद्देश्य क्या है?

मैं कुछ स्रोत कोड को पढ़ने, और इंटरफेस कक्षाओं में यह कई आभासी कार्यों घोषित किये गए हैं और इस तरह के रूप में डिफ़ॉल्ट से लागू:

virtual bool FunctionName(TypeName* pointer) 
{ 
    (void)pointer; 
    return true; 
} 

मैं पूछ सकता है क्या सूचक कास्टिंग का उद्देश्य है डिफ़ॉल्ट कार्यान्वयन में शून्य करने के लिए?

+2

यह संकलन नहीं करना चाहिए, समारोह मान की आवश्यकता है। –

+1

यह कई बार पूछा गया था। 'शून्य' को कुछ कास्ट करना इंगित करता है कि आप रिटर्न वैल्यू का उपयोग नहीं कर रहे हैं। आपके मामले में, यह एक नो-ऑप है। – zneak

+0

@zneak: 'सूचक' वापसी मूल्य नहीं है। उस प्रश्न का एक डुप्ली नहीं, हालांकि मुझे यकीन है कि यह पैरामीटर के लिए पहले भी कवर किया गया है। –

उत्तर

18

एकाधिक उद्देश्यों आप क्या डाली

  • संकलक कि एक अभिव्यक्ति पूरी तरह से है कि एक नहीं सेशन के रूप में लिखा इरादा है (चेतावनी बाधा के लिए उदाहरण के लिए,)
  • अंकन के अपने इरादे अंकन के आधार पर अपने संकलक और प्रोग्रामर है कि कुछ का परिणाम नजरअंदाज कर दिया है (एक समारोह कॉल का परिणाम है, उदाहरण के लिए)
  • एक समारोह टेम्पलेट में, यदि एक वापसी प्रकार टेम्पलेट पैरामीटर प्रकार T द्वारा दिया जाता है करने के लिए करने का इरादा है, और तुम वापस कुछ फ़ंक्शन कॉल का नतीजा जोसे अलग हो सकता है कुछ स्थितियों में। संकलक बाधा एक अल्पविराम ऑपरेटर अधिभार चयन करने के लिए ((void)a, b एक ओवरलोड अल्पविराम ऑपरेटर समारोह आह्वान कभी नहीं होगा)
    int f() { return 0; } void g() { return (void)f(); }
  • : T का सुस्पष्ट डाली, void मामले में, एक संकलन समय त्रुटि से बचने के सकता है।

ध्यान दें कि स्टैंडर्ड गारंटी देता है कि वहाँ एक operator void() अगर आप void करने के लिए एक वर्ग वस्तु डाली कहा जाता है कभी नहीं होगा (कुछ जीसीसी संस्करण जो नियम है, हालांकि ध्यान न दें)।

12
इस मामले में यह सिर्फ अप्रयुक्त पैरामीटर के बारे में संकलक की चेतावनी से बचने के लिए है में

+0

+1: सही जवाब –

+0

क्यों पहली जगह में इस तरह के एक पैरामीटर बनाने देने के लिए? – stackptr

+1

पैरामीटर हो सकता है क्योंकि कुछ अन्य वर्ग जो इस वर्चुअल फ़ंक्शन को लागू करता है वास्तव में उस पैरामीटर का उपयोग करता है। –

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