c++ 虚析构的作用以及成员变量为指针和普通数据成员在析构时的不同

本文探讨了C++中虚析构函数的重要性,当派生类指针指向父类对象时,非虚析构函数将导致无法正确调用派生类的析构。同时,文章对比了成员变量为指针和普通数据成员在析构时的区别,强调指针成员在析构时需手动释放以避免内存泄露,并提醒在处理包含指针的类时要注意拷贝构造和赋值运算符的正确实现。
摘要由CSDN通过智能技术生成

一、派生类指针指向父类时父类的虚构函数必须设置为虚函数

看下面的代码,其中基类的析构函数并没有设置为虚函数


class Data
{
   
public:
	Data(int data)
	{
   
		a = data;
		cout << "Data构造" << endl;
	}
	~Data()
	{
   
		cout << "~Data析构" << endl;
	}
private:
	int a;
};

class Base
{
   
public:
	Base()
	{
   
		cout << "Base构造" << endl;
	}
	 ~Base() 
	{
   
		cout << "~Base析构" << endl;
	}
};

class Derived : public Base
{
   
public:
	Derived(int data):m_data(data)
	{
   
		cout << "Derived构造" << endl;
	}
	~Derived() 
	{
    
		cout << "~Derived析构" << endl;
	}
private:
	Data m_data;
};

int  main()
{
   
	Base *p = new Derived(10);
	delete p;
	system("pause");
	ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值