我正在尝试使用运算符重载执行基本矩阵运算的程序。下面是我的代码: -
保存矩阵的类
class matrix {
int r, c;
int *data;
public :
matrix() //default contstructor
{
r=0; c=0;
data = NULL;
}
matrix(int a, int b) //general matrix constructor.
{
r = a; c = b;
data = new int[sizeof(int) * r * c];;
}
//Overloading + operator.
matrix operator +(matrix & M);
//Overloading = operator.
void operator =(matrix & M);
};
然后我创建了一个临时全局对象,如下所示。
matrix temp;
我重载了 + 运算符,如下所示。请注意,我必须使用上面创建的全局对象“temp”来保存并返回结果矩阵,因为我的数据成员上的一个是 int* 并且我无法返回具有本地范围的对象。
// Addition of matrix
matrix matrix :: operator+(matrix & M)
{
if(M.r != r || M.c != c) {
cout<<"Addition is not possible!";
return temp;
}
temp.r = r;
temp.c = c;
temp.data = new int(sizeof(int) * r * c);
for(int i=0; i<r; i++)
for(int j=0; j<c; j++)
*(temp.data +(i*c +j)) = *(data +(i*c +j)) + *(M.data +(i*c +j));
return temp;
}
好的,该程序运行良好......但我的问题是这个外部“临时”对象是否有任何有效的替代方案?