ムーブコンストラクタ (116)
私が現時点で読む( C++ Without Fear)の本では、クラスのデフォルトのコンストラクタを宣言していないと、コンパイラがあなたに "各データメンバーをゼロにする"ものを提供すると言います。 私はこれを実験しましたが、私はゼロアウトの動作を見ていません。 私はGoogleでこれを言及しているものも見つけられません。 これは単なるエラーですか、特定のコンパイラの特徴ですか?…
C++ 0x rvalue参照がデフォルトでないのはなぜですか?
今後のC++標準のC++の新機能のうちの1つは、「rvalue references」です。 rvalue参照は、一時値にバインドできる点を除いてlvalue(normal)参照と似ています(通常、一時参照はconst参照にのみバインドできます)。 void FunctionWithLValueRef(int& a){...} void FunctionWithRValueRef(int&…
マルチスレッドアプリケーションでクラッシュをデバッグしている間に、私はついにこのステートメントで問題を突き止めました: CSingleLock(&m_criticalSection, TRUE); CSingleLockクラスの名前のないオブジェクトを作成しているので、クリティカルセクションオブジェクトはこのステートメントの直後にロック解除されます。 これは明らかにコーダが望んでいたもので…
例えば: Beta_ab&& Beta::toAB() const{return move(Beta_ab(1, 1));}…
c++ - operator=とコピーコンストラクタの間のコード重複を減らす
私はデフォルト以外のコピーコンストラクタと代入演算子(それはポインタのリストを含んでいます)を必要とするクラスを持っています。 コピーコンストラクタと代入演算子の間のコードの重複を減らすための一般的な方法はありますか?…
クラスのコピーコンストラクタを定義するときにデフォルトコンストラクタを明示的に定義する必要がありますか。 理由を教えてください。 例えば: class A{int i; public: A(A& a){i=a.i;//Ok this is corrected....…
他のオブジェクトを含むクラスのC++暗黙コピーコンストラクタ
自分で実装していないと、コンパイラがデフォルトのコピーコンストラクタを提供することがあります。 私はこのコンストラクタが正確に何をしているのか混乱しています。 私が他のオブジェクトを含むクラスを持っていて、どれも宣言されたコピーコンストラクタを持っていない場合、どのような振る舞いになりますか? たとえば、次のようなクラスです。 class Foo{Bar bar;}; class Ba…
c++ - クラス内のデフォルトのコンストラクタで使用するベクトル<string>のデフォルトパラメータを設定するにはどうすればよいですか?
たとえば、Tableという名前のクラスで、そのコンストラクタは次のとおりですTable(string name="", vector<string> mods); ベクトルを空にするにはどのように初期化すればよいですか? 編集:これはC++だったことを忘れてしまった。…
c - リテラル文字列と関数戻り値は左辺値または右辺値ですか?
リテラル文字列が左辺値または右辺値かどうか疑問に思うだけです。 他のリテラル(int、float、charなど)は左辺値または右辺値ですか? 関数の戻り値は左辺値または右辺値ですか? 違いをどうやって伝えますか?…