Development Tip

C ++에서 단항 빼기 연산자를 오버로드하는 방법은 무엇입니까?

yourdevel 2020. 11. 7. 10:35
반응형

C ++에서 단항 빼기 연산자를 오버로드하는 방법은 무엇입니까?


벡터 클래스를 구현하고 있으며 일부 벡터의 반대를 가져와야합니다. 연산자 오버로딩을 사용하여이 방법을 정의 할 수 있습니까?

제가 의미하는 바는 다음과 같습니다.

Vector2f vector1 = -vector2;

이 연산자가 수행하기를 원하는 것은 다음과 같습니다.

Vector2f& oppositeVector(const Vector2f &_vector)
{
 x = -_vector.getX();
 y = -_vector.getY();

 return *this;
}

감사.


예,하지만 매개 변수를 제공하지 않습니다.

class Vector {
   ...
   Vector operator-()  {
     // your code here
   }
};

* this를 반환해서는 안됩니다. 단항 연산자는 적용되는 것을 변경하지 않고 완전히 새로운 벡터 값을 생성해야하므로 코드는 다음과 같이 보일 수 있습니다.

class Vector {
   ...
   Vector operator-() const {
      Vector v;
      v.x = -x;
      v.y = -y;
      return v;
   }
};

이것의

Vector2f operator-(const Vector2f& in) {
   return Vector2f(-in.x,-in.y);
}

클래스 내부 또는 외부에있을 수 있습니다. 내 샘플은 네임 스페이스 범위에 있습니다.

참고 URL : https://stackoverflow.com/questions/2155275/how-to-overload-unary-minus-operator-in-c

반응형