C++コピーコンストラクター呼び出し

C++コピーコンストラクター呼び出し

私の知る限り、コピーコンストラクタは以下のシナリオで呼び出されます。 1) Pass by value 2) Return by value 3) When you create and initialize a new object with an existing object これがプログラムです:#include<iostream> using namespace std; c…


c - リテラル文字列と関数戻り値は左辺値または右辺値ですか?

リテラル文字列が左辺値または右辺値かどうか疑問に思うだけです。 他のリテラル(int、float、charなど)は左辺値または右辺値ですか? 関数の戻り値は左辺値または右辺値ですか? 違いをどうやって伝えますか?…


C++コンストラクタ、一時的およびコピーのセマンティクスをコピーする

このプログラムの場合#include<iostream> using std::cout; struct C{C(){cout<< "Default C called!\n";}C(const C &rhs){cout<< "CC called!\n";}}; const C f(){cout<< "Entered f()!\n";…


新しいc++ 0x rvalue参照演算子のオーバーロードを追加する際の冗長コードの削減方法

私は新しいオペレータのオーバーロードを追加して、C++ 0x rvalueの参照を利用しています。私はたくさんの冗長コードを生成しているように感じます。 私はクラス、 treeを持っています。それは二重値の代数演算のツリーを保持しています。 使用例の例を次に示します。 tree x=1.23; tree y=8.19; tree z=(x+y)/67.31-3.15*y;…


c++ - デフォルト/コピー/移動ctorおよびコピー/移動代入演算子の自動生成条件?

コンパイラが通常デフォルトのコンストラクタ、コピーコンストラクタ、代入演算子を自動的に生成する条件で、私の記憶をリフレッシュしたい。 私はいくつかのルールがあったと思いますが、私は覚えていないし、評判の良いリソースをオンラインで見つけることもできません。 誰も助けることができますか?…


c++ - RValue Reference(&&)の戻り値が有用な場合はありますか?

関数がRValue参照を返す必要があるのはなぜですか? テクニック、トリック、イディオムやパターン? MyClass&& func(...); 私は一般的に参照を返す危険を認識していますが、とにかくそれを行う場合もあります( T& T::operator=(T)はただの慣用例です)。 しかし、 T&& func(...)どうですか? 私たちがそれを行うことで得られる一般的な場所はあります…



c++11 - 完璧なフォワーディング-それは何のため?

可能な重複: フォワード使用のメリット 誰かが完璧なフォワーディングについて教えてください。…


c++ - ベクトルが大きくなったときに移動セマンティクスを適用する方法

私は特定のクラスAオブジェクトのstd::vectorを持っています。 クラスは自明ではなく、コピーコンストラクタとムーブコンストラクタが定義されています。 std::vector<A> myvec; ベクトルをAオブジェクト(たとえばmyvec.push_back(a))で塗りつぶした場合、ベクトルはコピーコンストラクタA( const A&)を使用してサイズが拡大し、ベクトルの要素の新し…


C++ 11「自動」セマンティクス

私がC++ 11 autoを使うときに、それが値または参照に解決されるかどうかに関する型式控除のルールは何ですか? 例えば、時にはそれは明らかです: auto i=v.begin();// Copy, begin() returns an iterator by value これらはあまり明確ではありません。 const std::shared_ptr<Foo>& get_foo();…


c++ - 代入演算子の継承

このコードがあります:#include<iostream> class Base{public: Base(){ std::cout<< "Constructor base"<< std::endl;}~Base(){ std::cout<< "Destructor base"<< std::endl;}…




move 右辺値参照 ムーブコンストラクタ 完全転送 コンストラクタ コピーコンストラクタ forward std ムーブセマンティクス 禁止