Avatar ·

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

सभी को नमस्कार! मैंने C++ सीखना शुरू किया है और मुझे विभिन्न टाइप कास्टिंग ऑपरेटरों का सामना करना पड़ा। मुझे पता है कि C में कोष्ठक में सरल कास्टिंग होती है, लेकिन कहा जाता है कि C++ में विशेष ऑपरेटरों का उपयोग करना चाहिए: `static_cast`, `dynamic_cast`, `const_cast` और `reinterpret_cast`। मैं पूरी तरह से उलझन में हूं कि कब किसका उपयोग करूं। उदाहरण के लिए, मेरे पास कोड है: ```cpp class Base { public: virtual void show() { std::cout << "Base\n"; } }; class Derived : public Base { public: void show() override { std::cout << "Derived\n"; } void extra() { std::cout << "Extra\n"; } }; int main() { Base* basePtr = new Derived(); // Base* को Derived* में सही तरीके से कैसे कास्ट करें? Derived* d1 = (Derived*)basePtr; // C-style cast — काम करता है, लेकिन क्या यह सही है? int a = 10; double b = (double)a; // यह भी C-style है, लेकिन static_cast तो है? const int x = 5; int* ptr = (int*)&x; // क्या यह const_cast है? // और यह भी: वेरिएबल का पता पूर्णांक के रूप में कैसे प्राप्त करें