C++在new时的初始化的规律可能为:对於有构造函数的类不论有没有括号,都用构造函数进行初始化;如果没有构造函数则不加括号的new只分配内存初始化空间,不进行内存初始化的初始化而加了括号的new会在分配内存初始化的同时初始化为0。
没有初始化输出的结果是:
可见,new操作符并没有对内存初始化进荇初始化
而稍微改变一下代码(在new之后添加括号()):
可见,已经进行了初始化
main函数中使用语句:
输出结果都是10,可见都进行了初始化但是,如果吧A的构造函数删掉则两个语句输出的结果分别是:随机数,0
由此可见,C++在new时的初始化的规律可能为:对于有构造函数的類不论有没有括号,都用构造函数进行初始化;如果没有构造函数则不加括号的new只分配内存初始化空间,不进行内存初始化的初始化而加了括号的new会在分配内存初始化的同时初始化为0。