C++ プログラマーが知っておくべき C++ イディオムは何ですか?
C++ のイディオムとは、C++ にのみ適用できる、または他のほとんどの言語よりも C++ により適用できるデザイン パターンまたは特定のことを行う方法を意味します。
イディオムを使用する必要がある理由と、イディオムは何を達成するのですか?
C++ プログラマーが知っておくべき C++ イディオムは何ですか?
C++ のイディオムとは、C++ にのみ適用できる、または他のほとんどの言語よりも C++ により適用できるデザイン パターンまたは特定のことを行う方法を意味します。
イディオムを使用する必要がある理由と、イディオムは何を達成するのですか?
C++ に (ほぼ) 固有であることを学び、知るための最も重要な「パターン」は、RAII (Resource Acquisition Is Initialization) です。
編集:(質問に編集された追加の質問に答えるには)。RAII は、主にリソース管理を (半) 自動化するために使用します。最も明白な用途は、メモリの解放やファイルのクローズなど、所有しているオブジェクトがスコープ外になったときに、オブジェクトが所有するリソースを解放することです。
ここに 1 つのリストがあります。いくつかを選ぶ必要がある場合は、Curiously Recurring Template Pattern または Virtual Contstructors を使用する可能性があります。
PIMPL、別名IMPLメンテーションへのポインター?
テンプレートのメタプログラミング。これは基本的にコンパイル時のダック タイピングであるため、静的タイピングの速度でダック タイピングの柔軟性を最大限に活用できます。
STL を最大限に活用したい場合は、反復子とファンクター/関数オブジェクトが不可欠なイディオムです。イテレータの使用は、暗黙のうちに「半開き範囲」イディオムにも依存しています。
厳密な型付けとconst
正確さを利用することも非常に役立ちます。
また、デフォルトのコピー コンストラクターと代入演算子も禁止します。私は実際にはそれを超えていますが、それらは最も一般的です. それらが暗黙的でなければ、人生は楽になると思います。
RAII、COW、pimpl、デメテルの法則 (イディオムとして分類できるかどうかは不明)、型の特性とポリシー。(COW とデメテルの法則は C++ に限定されませんが)