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


