13

注: コミュニティ wiki としてマークされています。

最近、自分が C++ についてほとんど知らないことに気づきました。

その上:

  • STLの使用
  • RAIIの実装
  • ref-counted スマート ポインターの実装
  • 独自のポリシーベースのテンプレート クラスを作成する
  • 楽しみのためのオーバーロード演算子 <<

優れた C++ プログラマーが知っておくべきその他のテクニックは何ですか?

ありがとう!

4

6 に答える 6

8

これはそれをカバーするべきだと思います:

その他の C++ イディオム - ウィキブックス

于 2010-02-26T22:17:54.490 に答える
5
  • OOデザイン
  • 例外の安全性の保証の種類 (ほとんどの設計パターン/イディオムはこれに基づいています)。
  • どの標準コンテナをいつ使用するか
  • ブースト
于 2010-02-26T22:10:15.143 に答える
2

最初の 2 つは、優れた C++ プログラマーにとって「知っておくべき」ものです。「優れた C++ プログラマー」は、楽しみのために演算子をオーバーロードしません。

于 2010-02-26T22:16:37.873 に答える
2

基本:

  • RTTI
  • 仮想機能
  • shared_ptr など
  • テンプレート
  • 仮想継承
  • 可変長マクロ

また有用:

  • 属性 (コンパイラによって異なります)
  • 可変個引数テンプレート
  • 可変長関数
  • Constexpr (コンパイル時のソート/文字列のハッシュの計算など...ただし、後者は最後のセクションに関連しています)
  • ラムダス

ブレインファッキングや特別な場合に役立ちます:

  • CRTP
  • スフィナエ
  • inable_if (型特性)
  • Foreach マクロ
  • ユーザー定義リテラル
于 2012-10-27T01:17:23.037 に答える
0

C++ を改善するために使用した方法は、leveldb のソース コードを読み取ることです。leveldb は製品レベルのコードであるためです。そのため、実際の製品から cpp のイディオムとデザイン パターンを学ぶことができます。例をいくつかお見せしましょう

Leveldb は、table.h table_build.h write_batch.h などのヘッド ファイルのほぼすべてで、Pimpl のイディオムを使用します。コードから直接学ぶことができます

Leveldb は、ビルド パターンなどの多くの OO デザイン パターンを使用します。テーブルには、テーブルを構築するための table_build クラスがあり、ブロックには、ブロックを構築するための block_build クラスがあります。

Leveldb もイテレータ パターンを使用します。イテレータを使用すると、leveldb をより便利に使用できます。

そのため、leveldb には C++ エンジニアが知っておくべき慣用句や設計パターンが数多く含まれていると思います。

于 2015-11-06T09:29:43.633 に答える
0

(知っておく必要はほとんどありませんが、それでも有用です) 演算子のオーバーロードとテンプレートのメタプログラミングを使用してドメイン固有の言語を記述します (良い例については、Boost.Spirit を参照してください) - しかし、これは自分自身を簡単に撃つことにもなります。 .

于 2010-02-26T22:12:23.607 に答える