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

제목lec11 강의노트 14~15p 관련 질문입니다.2019-11-12 21:57
작성자

class Point {

double x;

double y;

public:

Point();

Point(int x, int y);

void setPoint(int x, int y);

int getX(void) const;

int getY(void) const;

Point operator+(const Point& pt);

Point& operator=(const Point& pt);

};


Point::Point() {

x = 0;

y = 0;

}

Point::Point(int x, int y) {

this->x = x;

this->y = y;

}

void Point::setPoint(int x, int y) {

this->x = x;

this->y = y;

}


int Point::getX(void) const {

return this -> x;

}


int Point::getY(void) const {

return this -> y;

}


Point Point::operator+(const Point& pt) {

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

return result;

}


Point& Point::operator=(const Point& pt) {

this->x = pt.getX();

this->y = pt.getY();

return *this;

}


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

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

return os;

}


int main() {

Point* pP1, * pP2;

pP1 = new Point;

pP2 = new Point(1, 2);


pP1->setPoint(10, 20);

*pP2 = *pP1 + *pP2;

cout << "[X:" << pP1->getX() << "]" << "[Y:" << pP1->getY() << "]" << endl;

cout << *pP2 << endl;


delete pP1;

delete pP2;

}



=================================================================================

위의 코드는 14~15p에 있는 'code example1'인데요.


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

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

return os;


1. 여기에서 'cout'과 'os'의 차이가 궁금합니다.

수업시간 에는 os 자리에 cout이 들어갔고, 메인 함수에서 'cout'을 사용했는데,

여기서는 'os'를 메인함수에 사용하지 않아도 출력이 되길래 왜 그런가 싶습니다.

구글링을 조금 해보니 다음과 같이 나오긴 하는데, 의미가 와닿지 않아 질문올립니다.




cout << "[X:" << pP1->getX() << "]" << "[Y:" << pP1->getY() << "]" << endl;

cout << *pP2 << endl;


연관된 질문인데요. cout을 객체에 대해 오버로딩해주지 않아도 "pP1->getX()" 와 "*pP2"가 출력된 이유를 모르겠습니다.

os에 cout이 포함되어 있어서 출력된 것인지, 아니면 "pP1->getX()" 와 "*pP2" 모두 객체가 아니어서 cout을 오버로딩해주지 않아도 출력이 된 것인지 모르겠습니다. 

(+ "pP1->getX()" 와 "*pP2"는 객체인가요? 아니면 다른 무엇인가요?)

mb-file.php?path=2019%2F11%2F12%2FF463_os.PNG
 



댓글