移动构造函数和移动赋值运算符是C++11引入的资源转移机制,通过右值引用“偷取”临时对象资源,避免深拷贝;需置原对象为可析构状态,推荐声明noexcept以支持容器高效扩容。

移动构造函数和移动赋值运算符是 C++11 引入的机制,用来避免不必要的深拷贝,提升资源管理效率。核心在于“偷走”临时对象(右值)所拥有的资源,而不是复制它。
移动构造函数:用右值“初始化”新对象
它接收一个右值引用参数(T&&),把源对象的内部指针、句柄等资源直接转移过来,再把源对象置为有效但可析构的状态(比如指针设为 nullptr)。
例如:
class String {
char* data_;
public:
// 移动构造函数
String(String&& other) noexcept
: data_(other.data_) { // “偷”指针
other.data_ = nullptr; // 源对象清空,防止析构时释放
}
};
登录后复制
常见触发场景:返回局部对象、std::move() 显式转换、函数参数是右值引用时绑定临时对象。
立即学习“C++免费学习笔记(深入)”;
移动赋值运算符:用右值“替换”已有对象的内容
它也接受 T&& 参数,先释放当前对象已持有的资源(如 delete[] data_),再接管右值的资源,并同样将右值“掏空”。
关键点:
标签: c++
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~