我在某些地方看到类矩阵的赋值运算符的实现如下所示:
class Matrix
{
private:
int rows;
int cols;
int **mat;
public:
Matrix& operator=(const Matrix& m)
{
if ( this != &m )
{
Matrix temp(m);
std::swap(temp.rows, rows);
std::swap(temp.cols, cols);
std::swap(temp.mat, mat);
}
return *this;
}
}
现在,假设我想使用交换函数,在没有编写std:swap
的情况下使用它的另一种方法是什么?我想在这种情况下构建一个实现两个矩阵交换的朋友函数?
现在,假设我想使用交换函数,在没有编写
std:swap
的情况下使用它的另一种方法是什么?我想在这种情况下构建一个实现两个矩阵交换的朋友函数?
你必须交换两个Matrix
对象。无论你是在operator=
函数还是其他函数中执行它都是次要的。
作为一种实践,我建议创建一个交换两个Matrix
对象的函数,并使用它来实现operator=
函数。你有各种各样的选择。
friend
功能。static
成员函数。static
成员函数。我可能会选择一个static
成员函数,但我没有看到使用其他两个中的任何一个的任何缺点。
需要注意的一点是,您最终将使用std::swap
来交换该函数中Matrix
对象的成员变量。它让我觉得这对你很关心。