• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목연산자(=) 오버로딩의 역할2019-11-12 20:04
작성자

class Point {

private:

int x;

int y;

public:

Point() :x(0), y(0) {}

Point(int _x, int _y) : x(_x), y(_y) {}

void setXY(int _x, int _y) {

this->x = _x;

this->y = _y;

}


int getX() const { return this->x; }

int getY() const { return this->y; }


Point operator+(const Point pt) { //pt2 +pt3 -> pt2.+(pt3)

Point result(this->x + pt.getX(), this->y + pt.getY());

return result;

}


Point& operator=(const Point& pt) {

this->x = pt.getX();

this->y = pt.getY();

return (*this);

}

};


void print_pt(const Point& pt) {

cout << pt.getX() << ", " << pt.getY() << endl;

}


ostream& operator<<(ostream& cout, const Point& pt) {

cout << pt.getX() << ", " << pt.getY();

return cout;

}


int main() {

Point pt1(1, 2); // 2번 생성자 호출

print_pt(pt1);

Point* pPt = &pt1; // pPt는 주소값을 저장하는 변수 ( 자체는 클래스 아님)

cout << (*pPt).getX() << ", " << (*pPt).getY() << endl;

cout << pPt->getX() << ", " << pPt->getY() << endl;

cout << endl;

Point* list = new Point[5]; // 포인트 객체가 총 5개 들어있음

for (int i = 0; i < 5; i++)

cout << list[i].getX() << ", " << list[i].getY() << endl;

cout << endl;

delete[] list;


Point pt2(10, 20);

Point pt3(100, 200);

pt1 = pt2 + pt3;

cout << pt1 << endl;

cout << pt2 << endl;

cout << pt3 << endl;

cout << endl;

return 0;




안녕하세요.

연산자 오버로딩에 관한 질문이 있습니다.

operator+가 객체끼리 덧셈을 가능해주게 하는 것처럼, operator=는 'pt1= pt2+pt3(밑에서 6번째 줄)'에서 값을 지정해주는 것을 가능하게 해준다고 이해했는데요.

operator= 부분을 지워도 'pt1=pt2+pt3'가 작동돼서 제가 생각했던 게 아닐 수도 있다고 싶었습니다.

여기서 operator= 가 어떤 역할을 하고 있는지가 궁금합니다.


댓글