Почему массив изменяется?
Операторы + и - принимают объекты по значению, а не по ссылке. Вероятно проблема в этом.
Былоfriend MatrixClass* operator+ (MatrixClass A, MatrixClass B);
//...
MatrixClass* operator+ (MatrixClass A, MatrixClass B)
{
	//...
}
Сталоfriend MatrixClass* operator+ (MatrixClass& A, MatrixClass& B);
//...
MatrixClass* operator+ (MatrixClass& A, MatrixClass& B)
{
	//...
}
Профит