4

有没有办法在 C++ 函数中为参数设置默认对象?我试过

void func(SomeClass param = new SomeClass(4));

它奏效了。但是,我应该如何知道最终是否必须释放分配的内存?我想在没有指针的情况下做同样的事情,只是堆栈上的一个对象。那可能吗?

4

3 回答 3

7
void func(SomeClass param = new SomeClass(4));

这是行不通的,因为 new 返回一个指针

void func(SomeClass param = SomeClass(4));

应该可以工作并且不需要释放对象。

于 2013-01-16T16:28:39.357 回答
3

您几乎拥有它,但您不需要new关键字。

void func(SomeClass param = SomeClass(4));

与使用相比,此方法的优势new在于它将在调用结束时自动删除,因此不需要内存管理。

另一种方法是使用共享指针。

于 2013-01-16T16:28:12.443 回答
-2

您可以使用重载:

void func(const SomeClass&) const;
void func() const {
  SomeClass* param = new SomeClass(4);
  func(param);
  delete param;
}
于 2013-01-16T16:36:42.000 回答