C++ 03には、暗黙的に起こりうる不要なコピーの問題がありました。この目的のために、C++ 11はrvalue references
とmove semantics
を導入しました。今私の質問は、この不要なコピーの問題は、C#やJavaなどの言語でも存在するのですか、それともC++の問題ですか?言い換えれば、rvalue references
はC#またはJavaと比べてC++ 11をさらに効率的にしますか?C++ Rvalue参照と移動セマンティクス
関連するC#(演算子のオーバーロードが許可されている)限り、数学的なベクトルクラスがあり、このように使用します。
vector_a = vector_b + vector_c;
コンパイラは確かにいくつかの一時オブジェクト(vector_tmp
それを呼び出すことができます)にvector_b + vector_c
を変換します。
今私はC#はvector_tmp
などの一時的な右辺値またはvector_b
などの左辺値を区別することができるとは思わないので、私たちは簡単にrvalue references
とmove semantics
を使用することによって回避することができ、とにかくvector_a
にデータをコピーする必要がありますC++では11。
とき、あなたはそれがJavaで発生したことを意味しています –