new、new()和new[]三者的区别

new、new()和new[]三者的区别

最近写程序,遇到了new, new()和new[]的三种状况,一时间有点混乱,所以总结以下:
1.new和new()
new A 来建立一个不肯定值的对象或实例,new() 建立一个值为零的对象或实例.而new(X),用于建立一个被初始化为X的对象或实例.
只有当A是POD类型的时候,new A和new A()才会有上面的区别
何为POD?POD是plain old data的缩写,它是一个struct或者类,且不包含析构函数以及虚函数
当不是POD时,有构造函数时,两个都被初始化为零,属于默认构造.
没有构造函数是,两个都初始化为一个随机值,且两个值相同.
2.new和new[]
new 用于单个对象或者实例的建立,就是调用类的构造函数
new[]用于建立对象或实例的数组实例,而且地址是连续的
释放内存时,new使用 delete,而new[]则对应delete[]web