'endl'에 해당되는 글 1건

  1. 2012.08.30 cout, cin 그리고 endl의 정체

Consol out, Consol In, End line 



cout과 endl 직접 구현하는 예제.


이 예제는 cout<<"wer"<<12123<<endl; 이런 식으로 할 수가 없다 .그래서 이런 연산을 가능케 하기위해 바꿔야 한다.





cout은 ostream 클래스의 객체이다.


ostream은 이름공간 std 안에 선언되어 있다.




만약....

int main(void)

{

Point pos(3, 5);

cout<<pos<<endl;    //3, 5 출력.

...

}


이런 유형의 연산이 가능하게 하고자 한다.

이것이 가능하기 위해선 << 연산자가 오버로딩 되어 있어야 한다. 그리고 만약 멤버함수의 형태로 오버로딩을 한다면, 다음과 같이 해석이 가능해야 하고,

cout.operator<<(pos);


전역함수의 형태로 오버로딩을 한다면, 다음과 같이 해석이 가능해야 한다.

operator<<(cout, pos);


어떠한 방법을 선택해야 하는가...?

# 멤버함수에 의한 방법을 선택하면 cout 객체의 멤버함수를 하나 추가해야 하므로, ostream 클래스를 정정해야 한다. 그런데 이는 불가능한 방법이다.


# 전역함수에 의한 방법을 택하는 수밖에 없다. 때문에 전역함수로 정의해야 한다.

&ostream operator<<(ostream &os, const Point &pos) { ... }




'Programming > C++' 카테고리의 다른 글

디폴트 대입 연산자의 문제점  (0) 2012.09.11
대입 연산자의 오버로딩2  (0) 2012.09.10
교환법칙 문제의 해결  (0) 2012.08.28
전위증가와 후위증가의 구분  (0) 2012.08.27
단항 연산자의 오버로딩  (0) 2012.08.27
Posted by scii
: