2

この質問では、OP は、動的に作成されたオブジェクトの参照を返す関数のアイデアを探ります。

intArray& createArray()
{
    intArray *arr = new intArray(10000, 0);
    return(*arr);
}

答えは、これがコンパイルされても、関数を使用しているプログラマーを混乱させるということです。関数が参照を返すとき、その参照の「ユーザー」はそのメモリ管理に責任を負わないことが予想されるため、彼は混乱するでしょう。

ポインターを返す API メソッドがたくさんあることに気付きました。それは、それらが不要になったときに、それらをクリアする (オブジェクトを削除し、ポインタを NULL に設定する) 責任があることを意味しますか?

4

4 に答える 4

2

それは、それらが不要になったときに [...] それらをクリアする責任があることを意味しますか?

多くの場合、常にではありません。確かに、使用している特定の API のドキュメントを確認する必要があります。

独自の API では、生のポインターよりもスマート ポインターを優先する必要があります。これにより、意図が明確になり、多くのメモリ管理の問題が簡素化されます。

于 2013-10-29T10:14:10.297 に答える