티스토리 뷰

C++ << C & Java

Hello, C++!!

plas 2019. 3. 28. 14:46

C++ 언어를 배워야 할 일이 가끔 생깁니다. 취업 준비를 위해서나 C/C++ 환경이 필요한 일을 할 때가 있겠지요? 

좋은 소식은 C와 자바를 할 줄 안다면 C++ 배우는 것은 그리 큰 일은 아니라는 것입니다. 물론 깊이 들어가면 많이 다르고 어려워지지만 가볍게 할 줄 아는 정도라면 며칠이면 배울 수 있습니다. 당신의 언어  툴박스에 C++을 추가해 보는 것이 어떨지요? 자 이제 시작합시다.

C++은 C에다 객체지향 기능을 추가한 언어입니다. 그래서 진지하게 이 언어를 제대로 배우려면 사실 C 전부에다가 그 정도 양을 더 공부해야 할 정도로 크고 복잡한 언어입니다. 그러나 C를 이미 알고 자바의 객체 지향도 안다면 다행히도 간단히 해볼 수 있는 지름길이 있습니다.

C++은 C와 자바가 갖지 않은 새로운 개념과 기능을 몇가지 가지고 있습니다. 참조형, 연산자오버로딩, 템플릿 등이 그런 어려운 주제에 해당합니다. 그런 것들도 간단하게 자바와 비교하여 뭔지 정도만 알고 있으면 좋을 것 같습니다.

C++은 입출력이 C와 많이 다릅니다. 그런데 사실 C++ 입출력은 참 잘 만들어져서 쉽고 편리합니다. 써보면 그것 때문에 C++이 좋아지기도 합니다. 입출력은 언어를 배울 때 기본이므로 잘 알아두면 좋겠지요?

클래스와 객체지향이 자바와 약간 다릅니다. 특히 값모델(value model) 이것이 상당히 어려운 개념입니다. 이것은 자바와 다른 C++의 메모리 모델에도 중요한 역할을 합니다. 이걸 제대로 이해한다면 C++의 메모리 효율성을 내 것으로 할 수 있습니다. 가비지 컬렉션으로는 도저히 흉내낼 수 없는 메모리 관리의 세계가 펼쳐집니다.

그럼 첫번째 글을 마치기 전에 간단하게 C++의 기본 입출력 예제를 한번 보고 가겠습니다.

#include <iostream>
using namespace std;
int main() {
   char name[20];
   cin >> name;
   cout << name << "입니다. 만나서 반갑습니다." << endl;
}

한 줄씩 살펴보겠습니다.

1) 첫줄 <iostream>은 입력과 출력을 위한 기본 라이브러리의 인클루드 문입니다.

2) using namespace std;는 네임스페이지를 지정하는 문장인데, 네임스페이스란 라이브러리 함수나 전역변수의 이름이 충돌하지 않게 경계를 막아주는 역할을 합니다. 이건 좀 어려운 얘기지만 C의 라이브러리와 C++의 라이브러리가 이름이 충돌하는 경우가 있어 이것을 막아주기 위해 이 문장을 넣어주어야 합니다.

3) cin >> name;  이 문장은 기본입력스트림(키보드 입력)에서 들어온 입력을 name에 넣으라는 명령입니다. >>는 입력을 변수의 타입에 맞게 차례로 읽어주는 역할을 합니다. C 언어로 하면 scanf("%s", name);에 대응합니다. C++은 따로 타입이 문자열인지 정수인지 지정해 주지 않아도 변수의 타입에 맞게 다음 입력을 읽어 저장해 줍니다. 여기서는 %s의 경우와 같이 공백 문자가 나올 때까지 읽어 name에 저장해 줍니다. char* 문자열 배열의 사용은 C와 동일하다고 보면 됩니다. >> 연산은 차례로 연결하여 붙일 수 있어서 cin >> name >> age >> address; 처럼 여러 변수에 연속하여 읽어들이는 것이 가능합니다. 이때 각 변수의 타입에 맞게 토큰을 잘라서 입력해 줍니다.

4) cout << name << "입니다..." << endl; 부분은 출력 문장입니다. 역시 기본출력스트림(콘솔창)으로 << 다음에 오는 것들을 차례로 내보냅니다. 이 때도 해당 변수와 값의 타입에 맞게 콘솔창에 보여줍니다. << endl;은 줄바꿈을 넣으라는 명령입니다. 환경에 따라 적절하게 줄바꿈을 출력해 주는 역할을 합니다. << '\n';과 같다고 보면 되지만 endl을 쓰는 것이 더 좋다고 볼 수 있습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함