对象作为c ++中的默认值

时间:2013-01-16 16:25:56

标签: c++

有没有办法在C ++函数中有参数的默认对象?我试过了

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

它有效。但是我怎么会知道我到底要释放分配的内存呢?我想在没有指针的情况下做同样的事情,只是堆栈上的一个Object。那可能吗?

3 个答案:

答案 0 :(得分:7)

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

这不起作用,因为new返回一个指针

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

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

答案 1 :(得分:3)

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

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

此方法优于使用new,因为它会在调用结束时自动删除,因此不需要内存管理。

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

答案 2 :(得分:-2)

您可以使用重载:

void func(const SomeClass&) const;
void func() const {
  SomeClass* param = new SomeClass(4);
  func(param);
  delete param;
}