Avatar ·

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 स्कोप से बाहर चला जाता है... } ``` जब प्रोग्राम समाप्त होता है, तो मैं कंसोल में देखता हूँ...