首页 > 后端开发 > C++ > C 中的新实例化与非新实例化:主要区别是什么?

C 中的新实例化与非新实例化:主要区别是什么?

Linda Hamilton
发布: 2024-11-24 06:35:11
原创
960 人浏览过

New vs. Non-new Instantiation in C  : What are the Key Differences?

实例化差异:new 与非 new

本题探讨了使用 new 运算符实例化对象与实例化对象之间的功能差异没有新的。

非新的实例化

Time t(12, 0, 0); // t is a Time object
登录后复制

此实例化创建一个名为 t 的 Time 对象,该对象驻留在堆栈上(在大多数实现中)。它在当前范围内保留其存在性。

new 实例化

Time *t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
登录后复制

此实例化使用运算符 new() 动态分配内存,然后调用构造函数 Time( )。分配的内存块的地址存储在t中。 Time 对象驻留在堆上(通常)。后面程序中必须删除t,以释放分配的内存,防止内存泄漏。

功能差异

除了内存管理上有明显区别外,没有什么区别两个实例之间存在显着的功能差异。这两种方法都会使用指定的参数创建 Time 类的实例。

注意

术语“栈”和“堆”通常用于指示 Time 类的存储位置分别是堆栈分配和堆分配的对象。然而,C 标准并没有根据内存位置强加这些区别。相反,它根据对象的存储持续时间对对象进行分类,这可能与堆栈和堆的传统概念一致,也可能不一致。

以上是C 中的新实例化与非新实例化:主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板