避けるべき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
これらの本を読むことは、あなたが質問しているような落とし穴を避けるのに、何よりも役に立ちました。
関連
-
[解決済み】致命的なエラー LNK1169: ゲームプログラミングで1つ以上の多重定義されたシンボルが発見された
-
[解決済み】'cout'は型名ではない
-
[解決済み】C++の余分な資格エラー
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】STLスタイルのイテレータを実装し、よくある落とし穴を回避する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】ファイルから整数を読み込んで配列に格納する C++ 【クローズド
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】std::cin.getline( ) vs. std::cin
-
[解決済み】VC++の致命的なエラーLNK1168:書き込みのためにfilename.exeを開くことができません。
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み】C++プログラマーが知っておくべき、一般的な未定義動作とは何ですか?[クローズド]
-
[解決済み] C/C#/C++でバックワードループをするのに最適な方法は何ですか?