与函数 malloc相比,运算符new要简单得多。例如
int *p1 = (int *)malloc(sizeof(int) * length);
int *p2 = new int[length];
原因:
new 内置了 sizeof、类型转换和类型安全检查功能。
对于非内部数据类型 的对象而言,new 在创建动态对象的同时完成了初始化工作。
在对象有多个构造函数时, new 的语句也可以有多种形式。例如:
class Obj
{
public :
Obj(void);
Obj(int x);
…
}
void Test(void)
{
Obj *a = new Obj;
Obj *b = new Obj(1);
…
delete a;
delete b;
}
倘若用 new 创建对象数组,那么只能使用对象的无参数构造函数。