有没有办法在C ++函数中有参数的默认对象?我试过了
void func(SomeClass param = new SomeClass(4));
它有效。但是我怎么会知道我到底要释放分配的内存呢?我想在没有指针的情况下做同样的事情,只是堆栈上的一个Object。那可能吗?
答案 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;
}