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释放。

经验分享 程序员 微信小程序 职场和发展