C++ 类对象的动态创建和销毁(自学笔记,可能有错)

构造函数 和 new 运算符结合使用

指针变量 = new 类型(常量)

指针变量 = new 类型(表达式)

int main()
{
	Test t;                 //在这里就调用了不带参数的构造函数
	t.Display();
	Test t1(10);            //这是调用了带参数的构造函数
	t1.Display();

	Test* t3 = new Test(20);   // new运算符不但开辟了空间并且调用构造函数
	t3->Display();
	delete t3;                 //这里是将开辟的空间销毁 防止内存泄漏

	return 0;
}

析构函数 和 delete运算符的结合使用

1.析构函数 不允许 重载,也就是说他不能有参数

2.在使用delete销毁 类的空间的时候 会调用析构函数

3.没有定义析构函数 编译器会自动定义一个空的析构函数

 

delete 指针变量    //销毁一个
delete []指针变量  //销毁数组

int main()
{
	Test* t3 = new Test(20);  // new运算符不但开辟了空间并且调用构造函数
	t3->Display();
	delete t3;

	Test* t4 = new Test(40);  // new运算符不但开辟了空间并且调用构造函数
	t4->Display();
	delete t4;

	Test t;               //在这里就调用了构造函数
	t.Display();
	Test t1(10);          //这是调用了带参数的构造函数
	t1.Display();
	return 0;
}

在这段程序中 有Test类的四个对象,t3和t4是程序员自己开辟空间的用的是堆空间。
使用完以后通过delete运算符销毁了空间,
在销毁空间的是时候调用了析构函数所以析构函数销毁空间的顺序是正向的,
即先销毁t3 然后是销毁的是t4。
而 t和t1是用 的栈空间(先进后出),
在main函数结束之后系统销毁了空间,
顺序是反向的即 先销毁t1接着销毁t。

 

析构函数 和 数组 的关系

这里基本没有什么大的特殊点 只要牢记 new Test() 是创建一个且赋值

new Test[] 是创建多个且不赋值并且销毁空间的时候 delete []p

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值