【发布时间】:2017-08-25 20:47:19
【问题描述】:
我现在尝试用一个矩阵做一个简单的练习,我想实现这个操作:矩阵 a,矩阵 b,矩阵 c(a),矩阵 d = a,矩阵 e = a + b。目前我保持简单,但后来我想做同样的事情,但使用动态分配,然后使用智能指针。
我声明了一个显式的复制构造函数并重载了 operator=,我还声明了一个析构函数,所以我有三个规则。
这是我的功能:
Matrix& Matrix::operator=(const Matrix& opEven)
{
std::cout << "Operator = " << std::endl;
for (int i = 0; i < ORD; i++)
{
for (int j = 0; j < ORD; j++)
{
arr1[i][j] = opEven.arr1[i][j];
}
}
return *this;
}
Matrix::Matrix(const Matrix& obj)
{
std::cout << "Constructing matrix using copy c-tor." << std::endl;
for (int i = 0; i < ORD; i++)
{
for (int j = 0; j < ORD; j++)
{
arr1[i][j] = obj.arr1[i][j];
}
}
}
问题是,当我尝试使用 Matrix d = a 我的编译器使用复制构造函数,而不是我的 operator=。
【问题讨论】:
标签: c++ c++11 matrix operator-overloading copy-constructor