小编M.A*_*ine的帖子

移动构造函数中的深拷贝

我是 C++11 的新手,所以我仍然在努力解决它的概念。

这是我的问题:

我有一个矩阵类:

class matrix
{

private:

  double** data;
  size_t number_lines;
  size_t number_columns;

  size_t capacity_lines;
  size_t capacity_columns;

public:
....

}
Run Code Online (Sandbox Code Playgroud)

我提供了一个复制构造函数,一个移动构造函数......

我重载了乘法运算符 *(double x) 以将矩阵元素乘以标量 x 并返回相乘后的矩阵。这是代码:

matrix matrix::operator*(double lambda)
{
double** aux_data = new double*[number_lines];
for (size_t i = 0; i < number_lines; i++)
{
    aux_data[i] = new double[number_columns];
    for (size_t j = 0; j < number_columns; j++)
        aux_data[i][j] = lambda*data[i][j];
}
return matrix(aux_data, number_lines, number_columns);
}
Run Code Online (Sandbox Code Playgroud)

函数的返回是一个右值引用,因此它调用移动构造函数。这是移动构造函数的代码:

matrix::matrix(const matrix&& moved_copy)
{
if (this != &moved_copy) 
{ …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

3
推荐指数
1
解决办法
1509
查看次数

标签 统计

c++ ×1

c++11 ×1