3
2番目のパラメータが指定されていない場合、デフォルトでポインタをインスタンス化する関数があります。 は、C++のデフォルトポインタパラメータで呼び出されるdeleteです
void doSomething(int a, Obj* obj = new Obj()) {
...
}
は、私は私がobjリリースしたいか、私はデフォルトのparam値からポインタをインスタンス化した場合に自動的に行われている場合、明示的に関数内の削除コールする必要がありますか?
2番目の引数が渡された場合、呼び出し元から渡されたポインタを削除したくないので、明示的にdeleteを実行しないようにしたいと考えています。
':よう
何か。カウントを参照するスマートなポインタベースのパラメータを考慮してください。そうでなければ、オブジェクトがデフォルトのパラメータとして構築されたかどうかわかりません。 – Donnie
* "明示的に削除するのは避けたいです。なぜなら2番目の引数が渡されると、呼び出し元が渡したポインタを削除したくありません。 "*右。だからあなたはこのパターンを使うことができません。 –
これは、doSomething(int a、Obj * obj)をobjポインタで管理する 'doSomething(int a)'オーバーロードを単純に持つ機会のようです。それともスマートなポインタ。また、誰かが関数にヌルポインタを明示的に渡すとどうなりますか? 'obj'が決してnullではないことを保証しようとしているようですが、これは悪い方法です... – jaggedSpire