C++中使用new与不使用new创建对象的区别

 一、实例

使用new创建对象:

CTest*  pTest = new  CTest();
delete pTest;

不使用new创建对象:

CTest  mTest;

使用new,用一个指向类对象的指针来接收;不使用new,直接定义一个类对象。

二、区别

使用new创建的特点:

new创建类对象使用完需delete销毁。

new创建类对象需要指针接收,一处初始化,多处使用。

new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间。

new对象指针用途广泛,比如作为函数返回值、函数参数等。

频繁调用场合并不适合new,就像new申请和释放内存一样。

作用域:

不用new:作用域限制在定义类对象的方法中,当方法结束时,类对象也被系统释放了(自动执行析构函数,不会造成内存泄漏)。

用new:创建的是指向类对象的指针,作用域变成了全局,程序结束需delete删除,系统不会自动释放(可能造成内存泄漏)。

类指针:

CTest*  pTest = NULL;

这跟不用new申明对象有很大区别,类指针可以先行定义,但类指针只是个通用指针,在new之前并未为该类对象分配任何内存空间。未经过对象初始化,则不需要delete释放。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值