移动构造函数是现代 C++(C++11 及以后)中为了提升程序性能而引入的一个极其重要的特性。
核心概念
移动构造函数 是一个特殊的构造函数,它用于将资源(如动态内存、文件句柄等)从一个即将被销毁的临时对象“移动”到一个新创建的对象中,而不是进行昂贵的深拷贝。
通俗地说:
-
拷贝:复印一份文件,原文件和复印件同时存在。
-
移动:把文件从A文件夹剪切到B文件夹,原位置的文件没了。
为什么需要移动构造函数?
在 C++11 之前,当遇到临时对象时,我们只能进行拷贝,这会造成不必要的性能开销。
问题场景示例(C++03):
cpp
class Vector {
private:
int* m_data;
size_t m_size;
public:
// 拷贝构造函数 (深拷贝)
Vector(const Vector& other) : m_size(other.m_size) {
m_data = new int[m_size];
std::copy(other.m_data, other.m_data + m_size, m_data); // 耗时操作!
std::cout << "拷贝构造函数被调用\n";
}
// 假设我们有一个函数返回一个 Vector 对象
static Vector createRandomVector() {
Vector vec;
// ... 初始化 vec ...
return vec; // 返回一个临时对象
}
};
int main() {
Vector v = Vector

最低0.47元/天 解锁文章

1万+

被折叠的 条评论
为什么被折叠?



