我有一个类,它包含一个指向一大块已分配内存和许多原始类型成员的指针。我正在考虑移动构造函数,并认为这是使用它的绝佳机会。显然,指针应该被移过去,但如果使用原语是个好主意,那就别想了。
下面是该类的一个人为示例:
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};
};
我的问题是,在堆上分配的开销是否会抵消移动语义引入的性能提升?