したがって、移動セマンティクスは優れており、パフォーマンスが向上します。
私はこれが完全に新しい機能であり、C++11なしではこれを行うことは「不可能」であることを読みました。
しかし、C ++ 11より前にこれを行うことはできますか?以下のようなもののように。
class AAA
{
private:
int* m_data;
public:
AAA(int _data) : m_data(new int(_data)) { }
AAA(AAA& _other) // Not using RValue reference.
{
m_data = _other.m_data;
_other.m_data = nullptr;
}
~AAA() { delete m_data; }
};
int main()
{
AAA sth1(100);
AAA sth2(sth1)
return 0;
}
RValue参照の存在は、引数がわずかに異なる同じ関数(ConstとNon-Constなど)を作成することではないと思いました。
簡単に言うと、別の「タイプ」であるRValue参照を使用すると、コピーコンストラクターと移動コンストラクターの両方を同時に実行できます。以上です。
私が正しいのか、何か大きなものが欠けているのか疑問に思います。
前もって感謝します。