class TestA { public: TestA(int size) : size_(size) { data_ = new int[size]; } TestA() {} TestA(const TestA& a) { size_ = a.size_; data_ = new int[size_]; cout << "copy " << endl; } TestA(TestA&& a) { this->data_ = a.data_; a.data_ = nullptr; cout << "move " << endl; } ~TestA() { delete[] data_; } int* data_; int size_; }; int main() { TestA a(10); TestA b = a; TestA c = std::move(a); return 0; }
这里如果不使用std::move(), 会有很大的拷贝代价,使用移动语义可以避免很多无用的拷贝。
移动语义针对那些实现了移动构造函数的类对象,对于基本类型还是会拷贝。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)