新对象变体
|
这是一个非常新手的问题,但对我来说却是全新的问题。在我的代码中,以及我以前见过的所有地方,都这样创建了新对象...
MyClass x = new MyClass(factory);
但是,我只是看到了一些看起来像这样的示例代码...
MyClass x(factory);
这样做是一样的吗?
没有找到相关结果
已邀请:
2 个回复
棠媳鳖
的实例。您将需要手动在该指针上调用
,否则将导致内存泄漏。同样,“ 4”返回一个指针,而不是对象本身,因此您的代码将无法编译。它需要更改为:
第二个示例在堆栈上分配了一个实例“ 2”。这对于短暂的对象非常有用,因为当离开当前作用域时,它们将被自动清理(并且速度很快;清理堆栈仅涉及增加或减少指针)。 这也是您实现“资源获取为初始化”模式(通常称为RAII)的方式。您类型的析构函数将清除所有动态分配的内存,因此,当堆栈分配的变量超出范围时,将为您清除所有动态分配的内存,而无需对
进行任何外部调用。
程琶
时,将在堆上创建对象,然后必须将其删除。另外,您真的需要
。另一种形式是在堆栈上创建一个对象,该对象将在作用域结束时自动销毁。