Класс «вектор» объявлен следующим образом:
class Vector
{
private:
float *arr;
int currentIndex;
int arrSize;
public:
Vector();
Vector(int size);
Vector(const Vector& V);
~Vector();
float length();
Vector normalize();
Vector operator +(const Vector &v);
Vector operator =(const Vector &v);
Vector operator -(const Vector &v);
};
Я определил «operator +» и «operator =», как показано ниже:
Vector Vector::operator +(const Vector &v)
{
for (int i = 0; i < arrSize; i++)
{
arr[i] += v.arr[i];
}
return *this;
}
Vector Vector::operator=(const Vector &v)
{
if (this != &v)//to avoid case "v = v"
{
arrSize = v.arrSize;
currentIndex = v.currentIndex;
delete [] arr;
arr = new float [arrSize];
for (int i = 0; i < arrSize; i++)
{
arr[i] = v.arr[i];
}
}
return *this;
}
main:
//...declared v1, v2 and v3...
v3 = v1 + v2;
cout << v3 << endl;
v3 получают неожиданные значения.
Скажите, пожалуйста, какую часть я реализовал неправильно и как я могу это исправить. Спасибо.