#include <iostream>
#include <stdio.h>
namespace mystd
{
class ostream
{
public:
ostream& operator<< (char * str)
{
printf("%s", str);
return *this;
}
ostream& operator<< (char str)
{
printf("%c", str);
return *this;
}
ostream& operator<< (int num)
{
printf("%d", num);
return *this;
}
ostream& operator<< (double e)
{
printf("%g", e);
return *this;
}
ostream& operator<< (ostream& (*fp)(ostream &ostm))
{
return fp(*this);
}
};
ostream& endl(ostream &ostm)
{
ostm<<'\n';
fflush(stdout);
return ostm;
}
ostream cout;
}
보시다싶이 ostream의 cout과 endl 간단히 구현된 코드입니다
책에서 보다가 이해가 안가는 점이있는데
ostream& operator<< (char * str)
{
printf("%s", str);
return *this;
}
1.반환값을 void로 바꾸고 출력만하면 될거같은데 어째서 반환값이 있는지
2.*this는 갑자기 어디에서 튀어나온건지
3.ostream& 이 ostream의 참조값이라고만 명칭만 알고있는데 이게 무슨역활인지 자세히 알고싶습니다 ㅜㅜ
++은 너무 어려워; 구글링 해봐
1. serialize 를 위해
2. this 는 개체 자신을 의미하는 포인터 * 이 앞에 붙으면 주소값이 아닌 내용 자체
3. 역활x 역할 바보야. 참조연산자 찾아봐
*this로 ostream 객체를 반환을 안하면 이어서 <<연산자를 못쓰니깐 cout<<"abc"<<"abc"<<"abc"....................이런식으로
정확히는 임시객체