实例化差异: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中文网其他相关文章!