这一段代码是创建类对象吗?如果是这样,为什么要使用这种方式

问题描述 投票:-3回答:1
ClassName *name = new ClassName();

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

c++ object pointers new-operator
1个回答
0
投票

没有该代码段未创建名称为“ name”的对象并键入“ ClassName”。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.