什么时候应该在C++中使用虚析构函数?
大家好!我是一名C++初学者,有一个问题困扰着我。我刚开始学习多态性和继承,遇到了这样一个情况。
假设我有一个基类`Animal`和一个派生类`Dog`。我想使用智能指针(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 离开作用域...
}
```
当程序结束时,我在控制台看到