实例化对象:有或没有New
在 C 中创建对象时,程序员可以使用“new”运算符或直接实例化它们没有它。虽然这两种方法都创建对象,但它们在几个关键方面有所不同。
没有 New
实例化一个没有“new”的对象会直接在当前作用域中为其保留内存。这通常在堆栈上完成,并产生具有自动生命周期的对象。该对象在其定义的范围内自动创建和销毁。
例如:
Time t(12, 0, 0); // t is a Time object
在上面的代码中,“Time”对象“t”在堆栈上创建并且它的生命周期绑定到当前作用域。
With New
使用“new”实例化对象会在堆上动态为其分配内存。这允许在对象的生命周期结束时显式地创建和销毁该对象。指针“t”存储的是对象的堆地址。
例如:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
这里,指针“t”被赋值为新创建的“Time”的堆地址目的。对象的生命周期与作用域无关,并且一直持续到使用“删除”运算符释放其内存为止。
主要区别
需要注意的是,这些差异是特定于实现的,因为 C 标准没有明确定义堆栈和堆行为。然而,在大多数实际实现中,堆栈内存用于自动对象,而堆内存用于动态对象。
以上是C 对象实例化:堆栈与堆:'new”还是不是'new”?的详细内容。更多信息请关注PHP中文网其他相关文章!