【Cherno的C++视频】Virtual destructors in C++

#include <iostream>

// virtual destructors are very important for when you're dealing with polymorphism.
// a base class A, a subclass B derived from A,when you want to reference class B as class A
// but it's actually class B, and then you decide to delete A, you also want the destructors
// of B to run.
// 

class Base
{
public:
	Base(){ std::cout << "Base Constructed\n"; }
	virtual ~Base() { std::cout << "Base Destructed\n"; }
};

class Derived : public Base
{
public:
	Derived() { m_array = new int[5]; std::cout << "Derived Constructed\n"; }
	~Derived() { delete[] m_array; std::cout << "Derived Destructed\n"; }
private:
	int* m_array;
};

int main(void)
{
	Base* base = new Base();
	delete base;
	std::cout << "----------------" << std::endl;
	Derived* derived = new Derived();
	delete derived;
	std::cout << "----------------" << std::endl;
	Base* poly = new Derived();
	delete poly;

	std::cin.get();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值