効果的なC ++はまだ効果的ですか?


139

この投稿で目にしたことから、私は本「Effective C ++」を読み始めることにしました。

しかし、C ++ 11のために多くの新機能があり、いくつかの良い習慣が変わった今、それが実際に良いアイデアであるかどうかはわかりません。C ++ 11の登場により、Effective C ++に含まれるアドバイスが廃止されましたか?その場合、どのトピックを避けるべきですか?


4
著者は記事scottmeyers.blogspot.co.uk/2013/01/…やその他のサイトでコメントをしましたが、基本的にはそうですが、考慮すべきことは他にもあります。
jcoder 2013

2
目次を見てください:pearson.ch/1471/9780321334879/…。多くの項目はまだ有効ですが、一部はr値参照やその他の新しいもので改善できますが、全体としては依然として有効です。
ゼータ

この質問は、SOにはあまり適していません。(1)質問されたコンテンツは問題ではなく、オフサイトのリソースにあります(リンクもされていません)。(2)本の各推奨事項への対応は個別の回答であり、この場合、これはリストの質問であり、必要な回答が多すぎるか、または単一の回答で本全体について説明する必要があります。この場合、この質問は広すぎます。そうは言っても、単一の推奨事項について同じ質問をするのは素晴らしいことです。
Ben Voigt 2014年

2
(1)私は、SOで最も人気のある質問の1つで言及されている本を参照しています。(2)それはまあまあの不満ですが、ほとんどすべての質問であなたは広くなることができます。またはあなたが好きなだけ狭くすることができます。回答は非常によく、SOのほとんどの質問よりもはるかに狭かったので、詳細なリストは必要ないと思います。オフトピック:「下にリンクされているstd :: stringコードへの整数のパフォーマンスに勝てる人はいますか?」で始まる質問があると思いますか?
ドイツのカプアノ2014

回答:


93

スコット・マイヤーズ自身が自分のブログでそれについて言わなければならなかったこと

これは、この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'ReillyAmazon(およびその他の多くのGoogleが利用できる)から販売されています。


45

はい、間違いなく読む価値があります。Scottが取り組んでいる新しい本があります。EffectiveC ++ 11。C++ 11のみのコードに集中しています。効果的なC ++はまだ非常に関連して、新しいブックに取って代わられていません。それを買って、読んで、楽しんでください:)


1
本が互いに積み重なっているのを見るので、Effective C ++は重要な基盤です。2つのうち1つだけを読む場合は、Effective C ++である必要があります。効果的なモダンC ++ははるかに難解です(正直に言うと、C ++の大部分は「モダン」とはかけ離れています)。
Andy Krouwel

21

1つ目は、この本はもちろんC ++ 03でも有効です。

2つ目は、この文章を読んだときに応じて、マイヤーズが書いている、または書いている、Effective C ++ 11です。

3、一般的に言えば、この本のポイントはまだ有効です。C ++は依然として安全よりも速度を優先しており、Effective C ++の多くの問題はこれを中心に展開しています。

唯一の種類私は無効であると期待されるポイントの言うものです「DOは、この操作を行う代わりに、これを行いません。」「これを行わない」は引き続き有効です。しかし、C ++はいくつかの問題を解決します。特に、C ++ 11にはMeyersが具体的に読者にBoostを紹介する機能の多くが含まれているため、boostを使用するための推奨事項は廃止される可能性があります。


1
そしてもちろんtr1、彼が言及したすべての要素がtr1C ++ 11標準に組み込まれたと私は信じているので。
カイルストランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.