我在某些地方看到类矩阵的assignemt运算符的实现如下所示:
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
的情况下使用它的另一种方法是什么?我想在这种情况下构建一个实现两个矩阵交换的朋友函数吗?
答案 0 :(得分:0)
现在,假设我想使用交换功能,在不编写
std:swap
的情况下使用它的另一种方法是什么?我想在这种情况下构建一个实现两个矩阵交换的朋友函数吗?
您必须交换两个Matrix
个对象。无论是在operator=
函数中执行还是在其他函数中执行此操作都是次要的。
作为一种惯例,我建议创建一个交换两个Matrix
对象的函数,并使用它来实现operator=
函数。你有各种各样的选择。
friend
功能。static
会员功能。static
成员函数。我可能会选择一个static
会员功能,但我没有看到使用其他两个功能之一的任何缺点。
需要注意的一点是,您最终将使用std::swap
来交换该函数中Matrix
个对象的成员变量。它让我觉得这对你很关心。