問題タブ [effective-c++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 効果的、より効果的、効果的な最新の C++ (および STL) を読むのに適した順序は何ですか?
より効果的な C++ は効果的な C++ の拡張であるのに対し、効果的なモダンな C++ は C++11 と 14 に焦点を当てていることを理解しています。また、効果的なSTLはどこに収まるべきですか?
それぞれの本が以前の本の内容に基づいているという意味で、上記の本を読むのに好ましい順序は何ですか? (中のすべてが私にとって新しいと仮定しますか?)
さらに、Effective Modern C++ は、Effective C++ の非公式な次のエディションと見なされますか?
c++ - インタープリター パターンでのエラー処理
アラビア数字 (1+2) またはローマ数字 (I+II) のいずれかを合計したい場合、次のようなインタープリター パターンを使用します。
(ここから派生したコード: https://en.wikibooks.org/wiki/C%2B%2B_Programming/Code/Design_Patterns#Interpreter )
誤ったクエリ (1+II) が適切に処理されるようにするにはどうすればよいですか? 私が考えることができる唯一の解決策は、どういうわけかキャストを使用することでしたが、それはエレガントな解決策のようには思えません。それとも、パターンをそのように使用すべきではありませんか?
もちろん、このために 2 つの別個の関数を記述することも 1 つのオプションですが、このパターンをより複雑な文脈自由文法に使用したいので、1 つの関数で実行できるかどうかに興味があります。
編集:私の問題もここで説明されています。関連するセクションを引用します。
ただし、言語とそれに付随する文法を導入するには、用語のスペルミスや文法要素の配置ミスがないか、かなり広範なエラー チェックが必要です。
だから私の主な質問:その広範なエラーチェックを最適に設計するにはどうすればよいですか?
c++ - 有効な C++ 項目 3 で、なぜ static_cast を使用するのか(*this) static_cast の代わりに(*これ)?
Scott Meyers の『Effective C++ 3rd』を読んでいます。
項目 3:
可能な限り const を使用してください。const メンバ関数 operator[] を使用するには、非 const メンバ関数 operator[] で 2 つのキャスト操作を行う必要があります。
static_cast<const TextBlock&>(*this)
Scott Meyers がの代わりに使用するのはなぜstatic_cast<const TextBlock>(*this)
ですか?
c++ - C++ が空のクラスで記述して呼び出す関数は何ですか?
『 Effective C++』という本の中で、以下の一節を見ました。
その結果、あなたが書くならば
これは、次のように記述した場合と本質的に同じです。
次のコードにより、各関数が生成されます。
しかし、上記のコードをコンパイルして作成された実行可能ファイルを逆アセンブルした後、そうではないことに気付きました。呼び出されている関数はありません。
主なアセンブリ コードは次のとおりです。
.text
セグメントに「空」という名前の関数はありません。
では、コンストラクターまたは空のクラスの割り当てを呼び出した後のコンパイラーの動作は実際にはどうなるのでしょうか? 本が言ったように、それはいくつかの機能を生成しますか? もしそうなら、それらはどこに保管されていますか?