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 है?
// और यह भी: वेरिएबल का पता पूर्णांक के रूप में कैसे प्राप्त करें