1) 모든 기본 타입에 대한 연산자 << 오버로딩이 되어 있음.
2) ostream이라는 클래스의 전역 객체임을 알 수 있음.
3) cout << "hello " << 15 << 3.5f <<
: << 연산자를 연속해서 사용 가능함.
가장 중요!
-> 3번을 통해서 참조반환임을 생각할 수 있음.
4) 유저 타입의 cout을 만들 수 있음.
cout.operator<<(3);
cout.operator<<(3.7f);
cout.operator<<(Point);
만들기 전의 조건
1) iostream 헤더 포함을 제거하자. 중복되므로.
2) using namespace std; 제거해야 함.
3) printf를 사용하자.
기본 지식
1) 모든 기본 타입에 대해 지원을 해야 함.
2) 연속적으로 사용이 가능함.
cout << 1 << 3.4f <<....
-> 오른쪽에서부터 값을 출력한 후에, 자신의 객체를 반환해야 함.
3) 자신의 객체를 값 형식으로 반환하면, 복사되므로, 참조로 반환해야 함.
4) cout과 ostream 은 std 이름 공간안에 있음.
1) 다양항 타입을 출력할 때 printf와는 다르게 서식 문자 %d, %f 전달할 필요 없음.
-> operator<< 함수가 다양한 타입에 오버로딩되어 있음.
cout.operator<<(int) : cout << 4;
cout.operator<<(double) : cout << 4.5f;
cout.operator<<(Point) : cout << Point;
: 객체도 cout 출력이 가능하게 만들어라