我是 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)