注: コミュニティ wiki としてマークされています。
最近、自分が C++ についてほとんど知らないことに気づきました。
その上:
- STLの使用
- RAIIの実装
- ref-counted スマート ポインターの実装
- 独自のポリシーベースのテンプレート クラスを作成する
- 楽しみのためのオーバーロード演算子 <<
優れた C++ プログラマーが知っておくべきその他のテクニックは何ですか?
ありがとう!
これはそれをカバーするべきだと思います:
最初の 2 つは、優れた C++ プログラマーにとって「知っておくべき」ものです。「優れた C++ プログラマー」は、楽しみのために演算子をオーバーロードしません。
基本:
また有用:
ブレインファッキングや特別な場合に役立ちます:
C++ を改善するために使用した方法は、leveldb のソース コードを読み取ることです。leveldb は製品レベルのコードであるためです。そのため、実際の製品から cpp のイディオムとデザイン パターンを学ぶことができます。例をいくつかお見せしましょう
Leveldb は、table.h table_build.h write_batch.h などのヘッド ファイルのほぼすべてで、Pimpl のイディオムを使用します。コードから直接学ぶことができます
Leveldb は、ビルド パターンなどの多くの OO デザイン パターンを使用します。テーブルには、テーブルを構築するための table_build クラスがあり、ブロックには、ブロックを構築するための block_build クラスがあります。
Leveldb もイテレータ パターンを使用します。イテレータを使用すると、leveldb をより便利に使用できます。
そのため、leveldb には C++ エンジニアが知っておくべき慣用句や設計パターンが数多く含まれていると思います。
(知っておく必要はほとんどありませんが、それでも有用です) 演算子のオーバーロードとテンプレートのメタプログラミングを使用してドメイン固有の言語を記述します (良い例については、Boost.Spirit を参照してください) - しかし、これは自分自身を簡単に撃つことにもなります。 .