ClassName *name = new ClassName();
以上这段代码是否创建了一个名称为“ name”的对象并键入“ ClassName”?如果是这样,为什么我们不能像这样ClassName name();
使用?为什么我们使用“ new”关键字?是因为我们在堆上创建它吗?
没有该代码段未创建名称为“ name”的对象并键入“ ClassName”。
它正在创建和初始化一个名为“名称”的对象,并键入“指向ClassName的指针”。变量“名称”将包含类型为“ ClassName”的完全构造对象的地址。这称为“构造动态存储持续时间的对象。”
为什么构造动态存储持续时间的对象?答案是其他三种类型的存储持续时间(自动,静态,线程本地)不合适,这是您要解决的问题的最佳解决方案。