[완료] std::istream에 대해서 질문드립니다.
글쓴이: hwayak / 작성시간: 금, 2009/09/18 - 1:09오전
g++ 4.3.3의 istream 파일을 보면, std::istream 클래스에는 operator bool()이 정의되어 있었습니다. 그렇다면... 아래의 코드가 컴파일 타임 오류가 나지 않아야 할거 같은데, 실제로 해보면 오류가 나더라구요 ^^;
int x; cin << x;
위 코드는 당연히 cin은 cin >> x과 같이 사용해야 맞으므로, 컴파일 오류를 보여주는게 개발자에게 이롭습니다. 하지만, std::istream 클래스가 분명 operator bool()을 가지고 있기 때문에 shift 연산자로 수행되어져야 하는게 아닌가 하는 생각이 들어서요...
그냥 컴파일러를 만들때 istream에 대해서는 operator<<가 쓰이면 무조건 안되도록 만들어져 있는건지 아니면, 기술적으로 뭔가 특별한 방법을 사용했기 때문인지 궁금하네요.
설명해 주실분 계신가요?
Forums:
http://www.cplusplus.com/refe
http://www.cplusplus.com/reference/iostream/istream/
http://www.cplusplus.com/reference/iostream/ostream/
http://www.cplusplus.com/reference/iostream/iostream/
특별한 기술이 아니라 istream에는 << 연산자에 대한 정의가 없습니다.
iostream은 링크와 같이 istream과 ostream을 상속받아서 구현됩니다.
operator bool()
std::istream 클래스에는 operator bool()이 정의되어 있지 않습니다. std::istream::sentry와 헷갈리신 거 아닌가요? 다시 확인해보세요.
죄송합니다. 제 실수가 맞네요.
std::istream::sentry::operator bool()과 햇갈렸네요.
std::istream 클래스에는 operator bool()이 정의되어 있지 않네요.
operator void*()와 operator !() 만이 정의되어 있네요.
감사합니다.
댓글 달기