whats is the difference between these three statements in c++ ??
aa *obj;
aa *obj1 = new aa;
aa *obj2 = new aa();
其中aa是一类
最后两句话我是孔子。
最佳答案
第一个不初始化指针。
在最新规范中,
如果省略了new-initializer,则该对象为默认初始化(8.5);如果没有执行初始化,
该对象具有不确定的值。
否则,将根据8.5的初始化规则对new-initializer进行解释以进行直接初始化。
也就是说,如果该类(您说过它是一个类)没有构造函数,则第一种形式的作用与局部作用域定义相同,并且未初始化内存。
空的初始化程序将强制无论如何都要对其进行初始化,这将得到与该类型的全局变量相同的结果。
如果一个类仅包含基本类型的数据成员,则该类可能没有构造器,甚至没有隐藏的构造器。您将看到讨论为“ POD”或普通数据。对于模板,发现差异很烦人,因此使用()对所有类型(甚至内置类型)统一使用规则进行了改进。 new int()
将给出一个指向值为0的指针。new int
将给出一个指向值为该值的指针,该值之前发生在该地址上。
关于c++ - 类对象声明困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29448451/