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

来源:互联网 发布:上海二手住宅成交数据 编辑:程序博客网 时间:2024/06/06 01:07

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[]

1 0
原创粉丝点击