Vector3 operator = (const Vector3 &v1)
{
if (&v1 == this)
return *this;
return Vector3(this->x = v1.x, this->y = v1.y, this->z = v1.z);
}
Возвращаю *this. А что такое *this. Что в нем хранится? В данном случае в нем хранятся элементы x, y, z или что? Можно пожалуйста какое нибудь объяснение на пальцах.
*this находится ссылка на текущий экземпляр класса.В вашем случае *this имеет тип Vector3& , если косвенно судить по приведённому коду, то скорее всего в нём содержатся переменные x, y, z, как вы и написали.
PS. У вас не совсем корректная реализация оператора присваивания, корректнее будет так:
Vector3& operator = (const Vector3 &v1)
{
if (&v1 != this)
{
x = v1.x;
y = v1.y;
z = v1.z;
}
return *this;
}
this - указатель на объект, в данном случае на объект типа Vector3.
*this - объект.
class Vector3
{};
...
Vector3 vector3;
//this - указатель на vector3 в пределах объекта vector3
// для каждого объекта будет this
P.S нужно возвращать ссылку на Vector3:
Vector3 &operator = (const Vector3 &v1)
operator overloading
‘this’ pointer in C++
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости