c++ new T 和 new T() 的区别

 

主要区别就是 是否调用构造函数

  1. new T:这种语法用于创建一个类型为 的对象,但不会调用默认构造函数进行初始化。对象的内存空间会被分配,但对象的成员变量不会被初始化,它们的值将是未定义的。你需要手动调用构造函数来初始化对象。

  2. new T():这种语法用于创建一个类型为 的对象,并调用默认构造函数进行初始化。对象的内存空间会被分配,并且对象的成员变量会被默认构造函数初始化为其类型的默认值。

如果T是一个自定义类,它可能具有自己的默认构造函数和其他构造函数。如果你想确保对象的成员变量被正确初始化,可以使用 new T() 语法。但是,如果你想在创建对象后手动调用构造函数进行特定的初始化操作,可以使用 new T语法。