割り当てられたメモリの大きなチャンクと多くのプリミティブ型のメンバーへのポインタを保持するクラスがあります。私はmoveコンストラクターに頭を悩ませていますが、これはそれを使用する絶好の機会だと思います。明らかに、ポインタは上に移動する必要がありますが、プリミティブを使用するのが良い場合はidkです。
以下は、クラスの考案された例です。
class Foo {
private:
long m_bar = 1;
/* 20+ similar members */
};
それらを移動可能にするには、動的に割り当てる必要があります。
class Foo {
public:
Foo(Foo && rhs) : m_bar(rhs.m_bar) { rhs.m_bar = nullptr; }
~Foo() { delete m_bar; }
private:
long *m_bar = new long{1};
};
私の質問は、ヒープに割り当てるオーバーヘッドは、移動セマンティクスによってもたらされるパフォーマンスの向上を無効にするのでしょうか?