この投稿で目にしたことから、私は本「Effective C ++」を読み始めることにしました。
しかし、C ++ 11のために多くの新機能があり、いくつかの良い習慣が変わった今、それが実際に良いアイデアであるかどうかはわかりません。C ++ 11の登場により、Effective C ++に含まれるアドバイスが廃止されましたか?その場合、どのトピックを避けるべきですか?
この投稿で目にしたことから、私は本「Effective C ++」を読み始めることにしました。
しかし、C ++ 11のために多くの新機能があり、いくつかの良い習慣が変わった今、それが実際に良いアイデアであるかどうかはわかりません。C ++ 11の登場により、Effective C ++に含まれるアドバイスが廃止されましたか?その場合、どのトピックを避けるべきですか?
回答:
スコット・マイヤーズ自身が自分のブログでそれについて言わなければならなかったこと
これは、このC ++ 0xより前の有効なC ++版の情報とアドバイスが引き続き関連するかどうか疑問に思われるかもしれません。それが報告されたことを嬉しく思います。驚いたことに、実際には。C ++ 0xの詳細に没頭して2年近く過ごしたので、C ++ 0xを念頭に置いてこの本の目次をレビューしたとき、私は少しうめき声を上げると予想していました。確かに一部のアイテムは不適切です。しかし、私が見つけたアドバイスは確かなものでした。C ++ 0x開発者は、consts、enums、およびinlinesを優先する必要がありますか
#defines
(アイテム2)?彼らはすべき。例外がデストラクタを離れることを防ぐ必要がありますか(アイテム8)?もちろん。リソースを管理するためにオブジェクトを使用する必要がありますか?データメンバーを非公開と宣言しますか?仮想関数の代替案を検討しますか?テンプレートからパラメータに依存しないコードを抽出しますか?(項目13、22、35、および44。)はい、はい、はい、はい!私の目標は、Effective C ++の目次で本のアドバイスを要約することであり、その要約は、「従来の」C ++開発と同様にC ++ 0x開発にも当てはまります。C ++ 0xはより大きな言語であり、いくつかの点で異なりますが、「古い」C ++を効果的に使用するためのコア技術は、C ++ 0xを効果的に使用するためのコアでもあります。これは、この効果的なC ++がC ++ 0xに完全に一致することを意味するものではありません。この本ではC ++ 0xの新機能については触れられていないため、それらの機能を効果的に使用するための項目がありません。C ++ 0xifiedの効果的なC ++には、操作の移動、初期化の均一化、およびラムダ式に特化したアイテムが含まれ、同時実行APIの効果的な使用に関する章全体が含まれます。そのような本には、たとえば、自動変数、範囲ベースのforループ、クラス内のデフォルト初期化子、および時折の可変テンプレートを利用するものなど、さまざまな例も含まれます。この本がC ++ 0xのサポートに不足している限り、エラーは省略のエラーであり、コミッションではありません。
更新:新しいタイトル「Effective Modern C ++」は、2014年11月からO'ReillyとAmazon(およびその他の多くのGoogleが利用できる)から販売されています。
はい、間違いなく読む価値があります。Scottが取り組んでいる新しい本があります。EffectiveC ++ 11。C++ 11のみのコードに集中しています。効果的なC ++はまだ非常に関連して、新しいブックに取って代わられていません。それを買って、読んで、楽しんでください:)
1つ目は、この本はもちろんC ++ 03でも有効です。
2つ目は、この文章を読んだときに応じて、マイヤーズが書いている、または書いている、Effective C ++ 11です。
3、一般的に言えば、この本のポイントはまだ有効です。C ++は依然として安全よりも速度を優先しており、Effective C ++の多くの問題はこれを中心に展開しています。
唯一の種類私は無効であると期待されるポイントの言うものです「DOは、この操作を行う代わりに、これを行いません。」「これを行わない」は引き続き有効です。しかし、C ++はいくつかの問題を解決します。特に、C ++ 11にはMeyersが具体的に読者にBoostを紹介する機能の多くが含まれているため、boostを使用するための推奨事項は廃止される可能性があります。
tr1
、彼が言及したすべての要素がtr1
C ++ 11標準に組み込まれたと私は信じているので。