1. ホーム
  2. c++

避けるべきC++の落とし穴とは?[クローズド]です。

2023-09-18 05:41:52

質問

私は最初にSTLのベクトルについて学んだことを覚えています。しばらくして、私はあるプロジェクトでboolsのベクトルを使いたいと思いました。いくつかの奇妙な動作を目にしてから、いくつかの調査を行った後、私は bools のベクトルは実際には bools のベクトルではありません。 .

C++で避けるべき他の一般的な落とし穴はありますか?

どのように解決するのですか?

簡単に挙げると、以下のようになります。

  • メモリの割り当てとクリーンアップを管理するために共有ポインタを使用することでメモリリークを回避する。
  • メモリリークを回避するために リソースの取得は初期化 (RAII) イディオムを使用して、リソースのクリーンアップを管理します(特に例外が発生した場合)。
  • コンストラクターで仮想関数を呼び出さないようにする
  • 可能な限り最小限のコーディングテクニックを採用する - たとえば、必要なときだけ変数を宣言する、変数をスコープする、可能な限りアーリーアウト設計を行う、などです。
  • 自分が投げる例外と、間接的に使用しているクラスが投げる例外の両方について、コード内の例外処理を本当に理解してください。これは、テンプレートがある場合に特に重要です。

RAII、共有ポインター、および最小限のコーディングは、もちろん C++ 固有のものではありませんが、この言語での開発時に頻繁に発生する問題を回避するのに役立ちます。

このテーマに関するいくつかの優れた書籍があります。

  • エフェクティブ C++ - Scott Meyers
  • より効果的なC++ - Scott Meyers
  • C++ コーディング標準 - Sutter &; Alexandrescu
  • C++ FAQ - Cline

これらの本を読むことは、あなたが質問しているような落とし穴を避けるのに、何よりも役に立ちました。