स्पष्ट रूप से मैं एक उत्तर में अपने शुरुआती कट में गलत था। वे लगभग बराबर हैं। और जबकि long long
या void *
जैसे यौगिक प्रकार के नाम सीधे कार्यात्मक वाक्यविन्यास का उपयोग नहीं कर सकते हैं (यानी long long(val)
काम नहीं करता है), typedef
का उपयोग इस समस्या के आसपास हो सकता है।
दोनों कास्ट नोटेशन बहुत खराब हैं और इन्हें टालना चाहिए। उदाहरण के लिए:
const char c = 'a';
void *fred = (void *)(&c);
काम करता है, और यह नहीं होना चाहिए।
दोनों सी शैली डाली अंकन कभी कभी static_cast
तरह const_cast
की तरह कभी कभी reinterpret_cast
तरह सटीक स्थिति है जिसमें यह प्रयोग किया जाता है के आधार पर दो की भी एक संयोजन व्यवहार करेंगे, कभी कभी,, या। ये अर्थशास्त्र जटिल हैं और किसी भी स्थिति में क्या हो रहा है यह बताना हमेशा आसान नहीं होता है।
मैं ज्यादातर सी ++ static_cast<type>(val)
शैली कास्ट का उपयोग करने के लिए चला गया हूं, और कभी भी सी-स्टाइल कास्ट का उपयोग नहीं करता हूं। इस प्रश्न के लिए मेरे शोध के आधार पर मैं कुछ भी के लिए फ़ंक्शन-शैली का उपयोग करने से रोकना चाहता हूं। प्रश्न "C++ cast syntax styles" का एक उत्कृष्ट उत्तर (स्वीकार्य एक) है जो विवरण क्यों देता है।
यह भी देखें: http://stackoverflow.com/questions/32168/c-cast-syntax-styles –