ポインターによって参照される構造体の一部のマテリアルを返し、構造体を削除したいと思います。
Java では、値を返すだけで、ガベージ コレクション システムが構造体を自動的に削除します。
しかし、C++ では、一時変数を使用して戻り値を格納し、ポインタを削除してから、格納された値を返すという、私が想像できる方法はあまりきれいではありません。
コンマ式を " " として使用する別のトリッキーな方法を試してみましreturn ptr->value, delete ptr
たが、「void 値は無視されないはずです」というコンパイル エラーが発生します。
それをよりエレガントに達成する方法はありますか?
どうもありがとう。
更新しました
みんなからの提案に感謝します。実際、私の問題の元の動機は、短いコードに使用したいコンマ式に関するものです。そして、議論はC++でのポインターの使用法に関するものであることがわかりました。これもまた非常に興味深いトピックです。
私は何年も C を使ってきたので、生のポインターには慣れていて、スマート ポインターの経験はほとんどありません。私が最初に考えたのは、ポインターが必要な基本的な条件が 2 つあります。1つはヒープに割り当てられた大きなメモリへの参照で、もう1つはリンクリストノードやツリーノードなどの動的割り当て用です(たとえば、BSTのような構造体を書いているときに元の問題が発生しました)。
では、C++ プログラミングでは、両方のケースでスマート ポインターが最適な選択でしょうか? 低レベルのライブラリで作業するなど、効率を考慮した場合、生のポインタをクラス内に完全にカプセル化して、メモリ リークのリスクを軽減することは可能ですか? 再度、感謝します。