c++ - 这段代码是在创建一个类对象吗?如果是这样,为什么要以这种方式使用它
问题描述
ClassName *name = new ClassName();
上面的这段代码是否创建了一个名为“name”并键入“ClassName”的对象?如果是那么为什么我们不能这样使用ClassName name();
?为什么我们使用“new”关键字?是因为我们在堆上创建它吗?
解决方案
不,这段代码没有创建一个名为“name”并键入“ClassName”的对象。
它正在创建和初始化一个名为“name”的对象,并输入“pointer to ClassName”。变量“name”将包含“ClassName”类型的完全构造对象的地址。这称为“构建动态存储持续时间的对象”。
为什么要构造动态存储期限的对象?答案是其他三种类型的存储持续时间(自动、静态、线程本地)是不合适的,它是您尝试解决的问题的最佳解决方案。
推荐阅读
- java - KTable 数据 - 字节打印
- rxjs - rxjs 收集 Subject 发送的值,然后将过去的值作为数组发送
- wordpress - 对于我网站的每个 WordPress 页面,为什么我有两个 URL?
- python - Tornado 替换服务器上的自定义记录器(不在本地计算机上)
- java - 使用 java junit5 maven spring-boot 从提供者端验证 PACT 时遇到问题
- c++ - 构建一个独立的 C++ exe。使用 msbuild 静态链接
- excel - 得到“外部表不是预期的格式。” 读取 Excel 文件时
- python - resources.py 中的 PDF 文件
- flutter - Flutter setState 3 个位置参数,但发现 1 个错误
- node.js - 更新终端输出 Node.js