C++ में वर्चुअल डिस्ट्रक्टर का उपयोग कब करना चाहिए?
सभी को नमस्कार! मैं एक शुरुआती C++ डेवलपर हूँ, और मुझे एक सवाल परेशान कर रहा है। मैंने अभी-अभी पॉलीमॉर्फिज्म और इनहेरिटेंस को समझना शुरू किया है, और मुझे ऐसी स्थिति का सामना करना पड़ा।
मान लीजिए, मेरे पास एक बेस class `Animal` और एक डिराइव्ड class `Dog` है। मैं मेमोरी को ऑटोमैटिकली मैनेज करने के लिए smart pointers (shared_ptr) का उपयोग करना चाहता हूँ। कोड इस प्रकार है:
```cpp
#include
#include
class Animal {
public:
Animal() { std::cout << "Animal created\n"; }
~Animal() { std::cout << "Animal destroyed\n"; }
virtual void speak() { std::cout << "Animal sound\n"; }
};
class Dog : public Animal {
public:
Dog() { std::cout << "Dog created\n"; }
~Dog() { std::cout << "Dog destroyed\n"; }
void speak() override { std::cout << "Woof!\n"; }
};
int main() {
std::shared_ptr pet = std::make_shared();
pet->speak(); // आउटपुट "Woof!"
// pet स्कोप से बाहर चला जाता है...
}
```
जब प्रोग्राम समाप्त होता है, तो मैं कंसोल में देखता हूँ...