처음에는 cin은 변수에 사용자입력값을 넣고, cout은 어떠한 값들을 출력해주는 용도구나~ 라고 지레 짐작하며 사용하곤 했는데요, 객체 지향적인 C++에서는 C의 printf()와 다르게 어떤 구조로 되어있는지 알아두면 응용도 이해하기 쉬울 듯 합니다.
Q)객체 지향적 프로그래밍이란?OOP(Object-Oriented Programming)
A) 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism) 의 개념이 담겨있는 프로그램 설계방법론이자, 어떠한 한 개념입니다.
초기 프로그래밍 방식인 절차적 프로그래밍과, 객체지향적 프로그래밍을 비교하자면,
절차적 프로그래밍은 "수제라면" 즉 재료를 준비하는 과정이 다 대부분 수제적인 느낌이 강합니다.
하지만 객체 지향적 프로그래밍은 "인스턴트 라면" 입니다.
즉 스프에 필요한 양념이 들어가있고, 건더기 스프에 채소가 들어가며, 면도 건면 혹은 기름에 튀긴 면으로 먹기 쉽게 조리되어서 물에 넣기만하고 끓이면 되는 느낌이죠, 이렇듯이 이러한 라면처럼 객체 즉 한덩어리 느낌으로 설계되어 우리들의 프로그래밍을 더욱 쉽게 할 수 있도록 도와줍니다.
Q)Cin 과 Cout은 어디에서 왔을까?
A) #include <iostream>에서 왔습니다.
iostream은 입출력을 위한 헤더 파일이고, C++의 표준 라이브러리이며, Input/Output Stream에서 이름을 따왔습니다.
또한 iostream은 자동적으로 <ios>, <streambuf>, <istream>, <ostream>, <iosfwd>등이 담겨 있습니다.
객체(오브젝트)들은 아래와 같이 사용 할 수 있습니다.
iostream object
Q) 그렇다면 Cin과 Cout도 객체인가요?
A) 네 맞아요, 이 포스팅에서 다루고싶은 내용입니다.
cin, cout은 a stream buffer의 input, output값인데요 입력값이 임시로 저장되어 있는 객체입니다
int n; std::cin >> n;
우선, cin이라는 객체에 사용자(키보드) 값이 입력값으로 들어갑니다. 이후 operator >> 을 통해 n이라는 변수에 넣어줍니다.
int n = 3; std::cout << n;
마찬가지로 n의 변수를 cout이란 객체에 담은 후 사용자(모니터)에게 3을 보여주는 것이죠.