C++对象移动(3)——移动构造函数

前言

为了更好的理解移动构造函数,你需要:

  1. 理解右值引用。不明白的童鞋们请查看我的上一篇博客右值引用
    2.C++的拷贝构造函数相关知识。《C++ Primer 5th》第13章

何为移动构造函数?

在讲移动拷贝构造函数之前,大家不妨先看看我这个例子:
首先,我定义一个名叫boVector的类。这个类的功能很简单,就是一个数组。我给这个类定义了一个拷贝构造函数,代码如下:

class boVector 
{
    
    
private:
    double *arr_;
    int size;
public:
    boVector(boVector &rhs)// copy constructor 拷贝构造函数
    {
    
     
        // deep copy 深拷贝
        size = rhs.size;
        arr_ = new double[size];
        for (int i = 0; i < size; ++i)
            arr_[i] = rhs.arr_[i];
    }
}

我这个代码应该说没什么可挑剔的。我都在堆区开辟了新的内存空间存放拷贝数据了,也即用深拷贝将一个boVector对象的数据拷贝给另一个boVector对象。

不过,请大家思考一个问题?如果size很大,上万个数据?深拷贝将会导致很大的内存和时间开销,让程序的效率变得低下。

于是乎,

Supongo que te gusta

Origin blog.csdn.net/qq_42518941/article/details/113819813
Recomendado
Clasificación