Avatar ·

C++ में (int)x या int(x) के बजाय static_cast<int>(x) का उपयोग क्यों करें?

नमस्ते! मैंने हाल ही में C++ सीखना शुरू किया है और देखा कि पुरानी पाठ्यपुस्तकों और फ़ोरम में अक्सर प्रकार रूपांतरण के लिए इस सिंटैक्स का उपयोग किया जाता है: ```cpp double d = 3.14; int i = (int)d; // C-style cast // या int j = int(d); // functional-style cast ``` लेकिन फिर मैंने देखा कि कई अनुभवी डेवलपर इस तरह लिखते हैं: ```cpp int k = static_cast(d); ``` और कहते हैं कि यह "सही" तरीका है। मैं पूरी तरह से नहीं समझता कि अंतर क्या है। आखिरकार, परिणाम हर जगह समान है — भिन्नात्मक भाग हटा दिया जाता है। लंबा `static_cast(x)` लिखने की ज़रूरत क्या है, जबकि आप बस `(int)x` लिख सकते हैं? क्या यह सिर्फ कोड को फुलाना नहीं है? मुझे विशेष रूप से निम्नलिखित बिंदुओं पर संदेह है: 1. क्या ऐसे मामले हैं जहाँ `(int)x` कुछ अप्रत्याशित करेगा, लेकिन `static_cast` नहीं? 2. क्या यह सच है कि C-style cast कम सुरक्षित है? यदि हाँ, तो कंपाइलर इसे बिल्कुल क्यों अनुमति देता है? 3. क्या यह प्रदर्शन को प्रभावित करता है या यह केवल शैली का मामला है? उदाहरणों के साथ स्पष्ट स्पष्टीकरण के लिए आभारी रहूंगा, अधिमानतः वास्तविक कोड पर।