0

私は一般的なアプリケーションについて話していますが、ハードウェアとインターフェースしているような低レベルではありません。

レガシ コードを見ると、次のようなものがたくさんあります。

delete myObject;

スマート ポインターの概念が以前に導入されなかったのはなぜですか。RAII は、スタック ベースのオブジェクトがスコープを離れたときに破壊されるという概念を利用しているだけです。これは初日からあります。

それはパフォーマンス、方向性の 1 つの余分なレベルでしょうか (ただし、これはわずかなコスト/オーバーヘッドです)。

開発者は、基本的で機能的なカスタム スマート ポインターを 30 分以内に作成できます。では、なぜそんなに長いのですか?

それとも、そこにあったのに、人々はそれを利用しないことを選んだのですか...

4

2 に答える 2

6

答えはわかりませんが、C++ が C から進化するにつれて、C の多くのコードは malloc/free を使用しました。他に方法がなかったため、C++ に new/delete として引き継がれました。C++ でのスマート ポインターの実装は、言語が作成された後に発生したと確信しています。結局のところ、C++ の初期のバージョンには存在しなかったテンプレートが必要です。

于 2012-08-31T10:35:14.327 に答える
2

適切に設計されたプロジェクトでは、オブジェクトの有効期間が適切に設計されているため、このようなタスクを自動化してもほとんどメリットがありません。

自動化された環境から来たプログラマーが C++ で多数派になり始めたので、C++ は必要になりました。

それでも、スマート ポインターの不適切な使用によって発生したバグは、単なる削除の欠如よりも追跡が困難です。

于 2012-08-31T10:36:12.367 に答える