47

C++ プログラマーが知っておくべき C++ イディオムは何ですか?

C++ のイディオムとは、C++ にのみ適用できる、または他のほとんどの言語よりも C++ により適用できるデザイン パターンまたは特定のことを行う方法を意味します。

イディオムを使用する必要がある理由と、イディオムは何を達成するのですか?

4

7 に答える 7

55

C++ に (ほぼ) 固有であることを学び、知るための最も重要な「パターン」は、RAII (Resource Acquisition Is Initialization) です。

編集:(質問に編集された追加の質問に答えるには)。RAII は、主にリソース管理を (半) 自動化するために使用します。最も明白な用途は、メモリの解放やファイルのクローズなど、所有しているオブジェクトがスコープ外になったときに、オブジェクトが所有するリソースを解放することです。

于 2009-11-18T22:32:11.727 に答える
29

ここに 1 つのリストがあります。いくつかを選ぶ必要がある場合は、Curiously Recurring Template Pattern または Virtual Contstructors を使用する可能性があります。

于 2009-11-18T22:38:26.630 に答える
11

PIMPL、別名IMPLメンテーションへのポインター?

于 2009-11-18T22:31:33.250 に答える
8

テンプレートのメタプログラミング。これは基本的にコンパイル時のダック タイピングであるため、静的タイピングの速度でダック タイピングの柔軟性を最大限に活用できます。

于 2009-11-18T22:35:37.757 に答える
7

STL を最大限に活用したい場合は、反復子とファンクター/関数オブジェクトが不可欠なイディオムです。イテレータの使用は、暗黙のうちに「半開き範囲」イディオムにも依存しています。

于 2009-11-18T22:37:36.473 に答える
6

厳密な型付けとconst正確さを利用することも非常に役立ちます。

また、デフォルトのコピー コンストラクターと代入演算子も禁止します。私は実際にはそれを超えていますが、それらは最も一般的です. それらが暗黙的でなければ、人生は楽になると思います。

于 2009-11-30T23:46:15.497 に答える
5

RAII、COW、pimpl、デメテルの法則 (イディオムとして分類できるかどうかは不明)、型の特性とポリシー。(COW とデメテルの法則は C++ に限定されませんが)

于 2009-11-19T00:05:09.690 に答える