【解決方法】移動セマンティクスとは何ですか?

[ad_1]

こんにちは、実際に私は動きのセマンティクスについて理解しようとしていますが、実際には理論を理解していません。 唯一の疑問は、移動セマンティクスが移動関数を使用している移動コンストラクターでどのように bcz を移動するかということです。理論によれば、所有権を別のリソースに転送すると、コピー コンストラクターが正しく呼び出されることになります。 コンストラクターを移動する方法がわかりませんが、とにかく正しくコピーする必要があります。 したがって、移動セマンティクスがどのように機能するか、および移動コンストラクターの後のオブジェクトのアドレスの情報を詳しく説明してください。

私が試したこと:

いくつかの疑問を持った移動セマンティクスについて理解しようとしました。

解決策 1

移動のセマンティクスを理解するには、何よりもまず一時オブジェクトとは何かを理解する必要があります。 つまり、その場で作成されたオブジェクトはすぐに破棄されます。

C++
class A{/*assume it has functionality*/};

A a; // Solid object
A a1 = A(/* constructor parameter(s)*/); // Where as a1 is solid, the RValue assignment is a temporary objest which is when discarded triggers destructor semanticts

したがって、移動セマンティクスは、A() を a1 に移動することを示します。2 つのオブジェクトが一時的にメモリを占有するようなコピーはありません。

適切なコピー コンストラクターとアサインマンが実装されていれば、移動セマンティクスがなくても機能します。 ただし、移動セマンティクスにより、オブジェクトのサイズが大きい場合などに、冗長なコピーが排除されます。

[ad_2]

コメント

タイトルとURLをコピーしました