[Modern C++] 5.1. 연산자 오버로딩

윤정민·2023년 7월 3일
0

C++

목록 보기
15/46

1. 연산자 오버로딩

C++에서는 사용자 정의 연산자를 사용할 수 있다. ::범위지정, . 멤버지정, .*멤버 포인터로 멤버 지정을 제외한 모든 연산자를 사용할 수 있다.

2. 비교 연산자 오버로딩

  • 이전에 구현한 compare함수를 사용하여 비교연산자를 구현
bool MyString::operator==(const MyString& str)
{
  return !compare(str);
}

3. 산술 연산자 오버로딩

  • 복소수를 구현한 Complex 클래스에서 +연산자 함수를 구현
    • 사칙 연산의 경우 반드시 값을 리턴

      연산 결과의 레퍼런스를 리턴한다면 a = b+c+b의 경우 사용자가 원하는 결과는 a = 2b + c이지만 실제로 처리는 (b.plus(c)).plus(b)가 되니 (b+c)+(b+c) = 2b+2c가 처리된다.(b에b+c가 들어가기 때문) 이를 방지하기 위해 값을 리턴하자

Complex Complex::operator+(const Complex& c) const
{
  Complex temp(real + c.real, img + c.img);
  return temp;
}

4. 대입 연산자 오버로딩

  • 복소수를 구현한 Complex 클래스에서 =연산자 함수를 구현
    • a = b = c인 상황을 고려해 자기자신을 반환
Complex& Complex::operator=(const Complex& c)
{
  real  = c.real;
  img = c.img;
  
  return *this;
}
profile
그냥 하자

0개의 댓글