首页 > 解决方案 > 这段代码是在创建一个类对象吗?如果是这样,为什么要以这种方式使用它

问题描述

ClassName *name = new ClassName();

上面的这段代码是否创建了一个名为“name”并键入“ClassName”的对象?如果是那么为什么我们不能这样使用ClassName name();?为什么我们使用“new”关键字?是因为我们在堆上创建它吗?

标签: c++objectpointersnew-operator

解决方案


不,这段代码没有创建一个名为“name”并键入“ClassName”的对象。

它正在创建和初始化一个名为“name”的对象,并输入“pointer to ClassName”。变量“name”将包含“ClassName”类型的完全构造对象的地址。这称为“构建动态存储持续时间的对象”。

为什么要构造动态存储期限的对象?答案是其他三种类型的存储持续时间(自动、静态、线程本地)是不合适的,它是您尝试解决的问题的最佳解决方案。


推荐阅读