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 に答える