연산자 오버로딩 개념을 공부하던 중에
아래코드에서 -는 이항 연산자인데 왜 매개변수를 하나만 받는 것인지 궁금해졌다..
#include <iostream>
using namespace std;
class Position
{
private:
double x_;
double y_;
public:
Position(double x, double y); // 생성자
void Display();
Position operator-(const Position& other); // - 연산자 함수
};
int main(void)
{
Position pos1 = Position(3.3, 12.5);
Position pos2 = Position(-14.4, 7.8);
Position pos3 = pos1 - pos2;
pos3.Display();
return 0;
}
Position::Position(double x, double y)
{
x_ = x;
y_ = y;
}
Position Position::operator-(const Position& other)
{
return Position((x_ + other.x_)/2, (y_ + other.y_)/2);
}
void Position::Display()
{
cout << "두 지점의 중간 지점의 좌표는 x좌표가 " << this->x_ << "이고, y좌표가 " << this->y_ << "입니다." << endl;
}
그리고 무엇보다...
Position Position::operator-(const Position& other)
{
return Position((x_ + other.x_)/2, (y_ + other.y_)/2);
}
이 부분이 이해가 가지 않았다.
return Position ((x_ ~~~~~~ 부분에서 x_는 도대체 어디서 나온 변수인걸까?
그리고 왜 매개변수는 하나인 걸까?
알고보니, Position pos3 = pos1 - pos2; 부분에서 pos1 객체를 기준으로 메소드 operator- 를 호출하고 매개변수로 pos2를 받는 것이었다.
즉, 여기서 x_와 y_는 pos1의 x좌표값, y좌표값이고
other.x_와 other.y_는 pos2의 x좌표값, y좌표값이었던 것이었다!
그래서 매개변수도 하나로 받아서 사용했던 것이다...
'언어 > C++' 카테고리의 다른 글
[C++] Queue STL (0) | 2024.01.23 |
---|---|
[C++] 상수 멤버 함수 (함수 뒤에 const) (2) | 2023.10.06 |
[C++] for each문 ->참조 변수 언제 사용? (feat.깊은 복사, 얕은복사) (+ cin.fail) 예제 (0) | 2023.09.30 |
[C++] locale이란? (0) | 2023.09.29 |
[C++] 얕은 복사, 깊은 복사 (0) | 2023.09.25 |