1 C++ 언어의 개요
(1) C와 C++
C++ 언어란?
- 1979년 Bell 연구소의 Bjarne Stroustrup이 C 언어를 확장하여 만든 프로그래밍 언어
→ C with Classes
→ 1983년부터 C++ 라는 이름을 사용함
주요 확장 내용
- 객체지향 프로그래밍: 클래스, 상속, 다형성, 동적 바인딩 등
- 일반화 프로그래밍: 템플릿
- 예외처리
2 C++ 프로그램의 작성 및 빌드
(1) 소스 프로그램의 작성
소스 프로그램 파일
- 처리하고자 하는 작업을 수행하는 C++ 프로그램 명령어를 담은 파일
- 확장자: '.cpp', '.cxx', '.C'
헤더 파일
- 클래스, 함수의 원형, 매크로, 전역변수, 상수 등 여러 소스 파일에 공통적으로 선언되는 내용을 담은 파일
- 단독으로 컴파일되지 않고, #include라는 선행처리기 지시어에 의해 소스 파일에 삽입되어 함께 컴파일됨
- 확장자: '.h', '.hpp'
선언과 정의
- 선언declaration: 컴파일러에게 프로그램 중에 사용할 이름과 그 형식을 알리는 것
- 정의definition: 선언이 그 이름에 대한 실체가 만들어지게 할 경우
3 C++ 프로그래밍 첫걸음
#include <iostream>
int main()
{
// 표준 출력 스트림으로 문장을 출력함
std::cout << "나의 첫번째 C++ 프로그램" << std::endl;
return 0;
}
(1) 주석
- '/*'와 '*/' 사이에 문장을 작성
- '//'를 기입하면 그 행의 나머지는 주석
(2) 선행처리
- C++ 프로그램을 컴파일하기 전에 소스 프로그램을 가공하여 컴파일러가 실제로 번역할 소스 프로그램을 만드는 것
- 선행처리기 지시어preprocessor directives로 처리를 지시함
- 선행처리기 지시어는 '#'로 시작함
- 선행처리기 지시어 문장은 한 행에 한 개의 문장을 작성함
(3) 문장
- 한 문장의 끝에는 세미콜론(;)을 기입하여 다음 문장과 구분한다.
블록
- 한 개의 문장을 중괄호({}) 안에 나열하여 묶어 놓은 것
- 여러 개의 문장을 하나의 문장처럼 취급하거나 함수의 몸체를 구성하기 위해 사용
(4) 함수
- 머리부 + 몸체 블록
- 모든 C++ 프로그램은 하나 이상의 함수로 구성되며, 그중 이름이 main()인 함수부터 프로그램이 시작된다.
- return 명령: 함수를 마치고 그 함수를 호출한 곳으로 되돌아가게 하는 명령
- → main() 함수에서 return을 하면 프로그램이 끝난다.
(5) 입출력 스트림
- C++의 iostream 표준 라이브러리를 통해 문자 형태의 입출력을 할 수 있다.
std::cout 객체
- 표준 출력 스트림 객체
- 데이터를 문자열로 반환하여 출력함
- 삽입 연산자 <<
std::endl 조작어
- 행의 끝을 알리는 문자를 출력
- 다음에 출력하는 내용은 아래 행에 출력
std::cin 객체
- 표준 입력 스트림 객체
- 문자열을 입력 변수의 자료형의 값으로 반호나하여 입력함
- 추출 연산자 >>
- 백색 공백 문자(빈칸, 탭, 새줄 문자)는 구분 문자로 취급함
(6) 명칭공간
- 특정한 명칭들이 인식되는 프로그램의 부분
- 다른 영역의 명칭 선언과 무관하게 명칭공간 내에서 자유롭게 명칭을 선언하여 사용할 수 있음
- 명칭공간 외부에서는 소속 명칭공간을 지정해서 사용해야 함
- using 구문을 사용하면 특정 명칭공간이나 명칭공간 내의 특정 이름의 명칭공간 지정을 간소화할 수 있다.
#include <iostream>
namespace NameSpace1 { int a = 10; }
namespace NameSpace2 { int a = 20; }
int a = 30;
namespace NameSpace1 { int b = 50; }
int main()
{
int a = 40;
std::cout << NameSpace1::a << std::endl;
std::cout << NameSpace2::a << std::endl;
std::cout << ::a << std::endl;
std::cout << a << std::endl;
std::cout << NameSpace1::b << std::endl;
return 0;
}