Avatar ·

C++ में static_cast, dynamic_cast, const_cast और reinterpret_cast का उपयोग कब करें?

नमस्ते! मैंने अभी-अभी C++ सीखना शुरू किया है और प्रकार रूपांतरण को समझ नहीं पा रहा हूँ। ऐसा लगता है कि चार अलग-अलग operators हैं: static_cast, dynamic_cast, const_cast और reinterpret_cast। लेकिन कब किसका उपयोग करना है — यह पूरी तरह से गड़बड़ है। उदाहरण के लिए, मैं double को int में बदलना चाहता हूँ। क्या मैं सीधे (int)value लिख सकता हूँ, जैसे C में? static_cast की आवश्यकता क्यों है? या यह स्थिति: मेरे पास एक class hierarchy है, और मैं base class pointer को derived class pointer में बदलना चाहता हूँ। मैंने सुना है कि इसके लिए dynamic_cast का उपयोग किया जाता है, लेकिन यह केवल virtual functions के साथ काम करता है। अगर वे नहीं हैं तो क्या होगा? क्या static_cast का उपयोग किया जा सकता है? इसके अलावा, const_cast मुझे भ्रमित करता है। मुझे पता है कि यह constness को हटा सकता है। लेकिन क्या यह खतरनाक नहीं है? और const object को बदलने की आवश्यकता क्यों हो सकती है? और सबसे डरावना — reinterpret_cast। मैंने पढ़ा है कि यह किसी भी pointer को किसी भी दूसरे pointer में बदल सकता है, यहाँ तक कि int में भी। क्या यह कानूनी है? ऐसा कब उपयोगी हो सकता है? यहाँ एक code example है जो मेरे लिए compile नहीं हो रहा है।