一、实例
使用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释放。