移动构造函数&移动赋值运算符

移动构造函数是现代 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值