动态对象创建
C语言中malloc和free的问题:
1. 程序员必须确定对象的长度;
2. malloc 返回一个 void*指针,C++不允许将 void*赋值给其他任何指针, 故必须强转;
3. malloc 可能申请内存失败, 所以必须判断返回值来确保内存分配成功;
4. 用户在使用对象之前必须记住对他初始化, 构造函数不能显示调用初始化(构造函数是由编译器调用), 用户有可能忘记调用初始化函数。
new operator
new 会返回一个该类型的指针。
默认调用构造函数,开辟空间,返回不是void*,不要强制转换
delete 释放
new 对象用 void* 去接收,释放不了对象
new 出来的是数组,如何释放?delete [] ...
new 出来的是数组,肯定调用默认构造
Person * person = new Person;//堆区开辟
相当于:
Person* person = (Person*)malloc(sizeof(Person));
if(person == NULL){
return 0;
}
person->Init();//构造函数
New操作符能确定在调用构造函数初始化之前内存分配是成功的,所以不用显示确定调用是否成功。
所有new出来的对象&#x