2016-10-02 1 views
1

나는 안드로이드 앱을위한 Udacity 초급 과정을 수강하고 있는데, 그 클래스는 필드 (변수) & 메쏘드가있어서 객체를 인스턴스화하는 데 사용할 수 있다고합니다. 기본적으로 클래스는 객체의 청사진이며 객체는 클래스의 인스턴스입니다.C++에서 cin 및 cout 객체는 클래스 iostream과 관련하여 어떻게됩니까?

예를 들어, 텍스트, textSize, textColor 등을 지정할 수있는 XML 파일에 'TextView'개체를 만드는 경우이 개체는 이미 정의 된 'TextView'클래스의 인스턴스입니다 자바에서 인스턴스화 할 수있는 필드와 메소드를 알려줍니다. 따라서 TextView 객체를 사용하면 필드 및 메서드를 따라 'TextView'클래스의 인스턴스를 만들 것입니다.

이제 내 혼란이 따릅니다.

C++에서 'cin'과 'cout'은 'iostream'클래스의 객체로 알려져 있습니다. 하지만 cin 및 cout이 이미 소스 코드에서 인스턴스화하지 않은 경우에도 클래스 객체로 간주 될 수 있습니까?

예를 들어 자바에서는 TextView를 XML 소스 코드로 만들고 나면 'TextView'클래스의 객체가됩니다. 그러나 cin과 cout이 'iostream'클래스의 객체로 작동하는 것이 어떻게 가능합니까? 심지어 'iostream'클래스의 필드와 메소드를 사용하여 인스턴스화하기 전에 어떻게해야합니까? cin과 cout이 'iostream'클래스의 객체라면 'iostream'클래스를 인스턴스화 한 것입니까?

또한 Google에서 'iostream'처럼 cin과 cout 개체가 포함되어 있지만 계층 적 의미의 클래스에 속한 개체가 아닌 클래스의 인스턴스가 아닌 것 같은 많은 정의가 있습니다. 물론 객체는 클래스를 기반으로 만들어진 객체이지만 객체는 클래스라는 더 큰 컨테이너에있는 작은 컨테이너 인 것처럼 클래스에 속한 것이 아닙니다. 그래서 cin과 cout이 iostream의 객체라면, iostream에 정의 된 모든 필드와 메소드를 가지고 있지 않아야합니까?

여기에 점을 연결하는 데 어려움을 겪고 있습니다.

+1

이들은 C++ 라이브러리에 의해 인스턴스화됩니다. 라이브러리가 인스턴스화합니다. –

+1

Java에서'System.in'과'System.out'을 사용해 본 적이 있습니까? – chrylis

+0

@SamVarshavchik 그래서 cin과 cout이 C++ 라이브러리에서 인스턴스화 될 때, iostream 클래스에 의해 정의 된 모든 필드와 메소드를 가지고 있습니까? – lostsoul

답변

1

C++에서 'cin'및 'cout'은 iostream의 개체로 알려져 있습니다.

정확하지 않습니다. 여기

표준 자신의 유형에 대해 말씀입니다 :

namespace std { 
    extern istream cin; 
    extern ostream cout; 
    extern ostream cerr; 
    extern ostream clog; 

    ... 
} 

하지만 어떻게 내가 심지어 내 소스를 인스턴스화하지 않은 경우 이미 클래스의 객체로 간주 될 CIN 및 cout을위한 수 암호?

표준 헤더 파일 iostream에 선언되어 있습니다. 그것들은 표준 라이브러리의 구현에서 정의됩니다. 소스 코드에서 정의 할 필요는 없습니다.

그래서 cin과 cout이 iostream의 객체라면, iostream에 정의 된 모든 필드와 메소드를 가지고 있지 않아야합니까?

std::cinstd::istreamstd::cout의 목적은 유형 std::ostream의 목적이다.

std::istream의 구성원 기능은 std::cin으로 전화 할 수 있습니다.
회원 전화 번호 std::ostreamstd::cout으로 전화 할 수 있습니다.

+0

Omg. 사랑해. 이것은 매우 깨끗한 soooo 다! !!!!! – lostsoul

+0

지금 해보십시오. 하자 멀리 실시하지 않습니다 :) –

관련 문제