商务攻略
c++使用new和不使用new的区别
2022-01-02 03:58  浏览:399

new创建类对象需要指针接收

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

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

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

使用new创建

CTest* pTest = new CTest();

delete pTest;

不使用new创建,直接使用类定义声明

CTest mTest;

一般情况下不使用new

创建对象时有括号与没有括号得区别

在栈上创建对象:

1: CTest mTest; 调用默认构造函数

2: CTest mTest(); 表示一个CTest成员变量

3: CTest mTest(2); 调用某种函数CTest(int)

在堆上创建对象:

1: 如果该类没有定义构造函数(由编译器合成默认构造函数), 也没有虚函数,那么CTest* pTest = new CTest;将不调用合成得默认构造函数,CTest *pTest = new CTest(); 则会调用默认构造函数

2: 如果该类没有定义构造函数(由编译器合成默认构造函数), 但是有虚函数,那么CTest* pTest = new CTest和CTest *pTest = new CTest(); 会调用默认构造函数

3: 如果该类定义了默认构造函数,那么CTest* pTest = new CTest和CTest *pTest = new CTest(); 会调用默认构造函数

4: 对于系统内置类型:

new int; 分配内存,未初始化

new int(); 分配内存,初始化为0

new int(1); 分配内存, 初始化为1