(전체가 아니라 C#과 차이가 있는 부분을 중심으로 요약 정리)

C++의 기초

프로그래밍 언어의 공식 예제 ‘Hello, World!’

주석

(생략)

전처리 지시자

C++로 작성된 소스 코드를 프로그램으로 만드는 빌드(build) 작업은 세 단계를 거친다.

  1. 전처리(preprocess) 단계에서는 소스 코드에 담긴 메타 정보를 처리한다.
  2. 컴파일(compile) 단계에서는 소스 코드를 머신이 읽을 수 있는 오브젝트(object) 파일로 변환한다.
  3. 링크(link) 단계에서는 앞에서 변환한 여러 오브젝트 파일을 애플리케이션으로 엮는다.

지시자(directive)는 전처리기에 전달할 사항을 표현하며 #include 처럼 # 문자로 시작한다.

main() 함수

프로그램은 항상 main() 함수에서 싲가한다. main() 함수는 int 타입의 값을 리턴하는데, 이 값으로 프로그램의 실행 결과에 대한 상태를 표시한다. main() 함수 안에서는 리턴 문장을 생략해도 되는데 그러면 자동으로 0을 리턴한다. (개인적으로 마음에 드는 디자인은 아니다. 이런 식으로 예외를 허용해주면 일관성이 깨지기 때문)

main() 함수는 매개변수를 받지 않거나 다음과 같이 2개를 받도록 작성할 수 있다.

int main(int argc, char* argv[])

argc는 프로그램에 전달할 인수 개수를 지정하고, argv는 전달할 인수의 값을 담는다. argv[0]에는 프로그램 이름이 담기는데, 공백 스트링으로 지정될 수 있어서 프로그램 이름을 참조하려면 이 값보다는 플랫폼에서 제공하는 기능을 사용하는 것이 좋다. 여기서 주의할 점은 실제 매개변수는 인덱스 1부터 시작한다는 것이다.

I/O 스트림

I/O 스트림은 13장에서 자세히 다루는데, 기본 원리는 굉장히 간단하다. 출력 스트림은 데이터를 나르는 컨베이어 벨트에 비유할 수 있다. 성격에 맞는 컨베이어 벨트에 데이터를 올려두기만 하면 그대로 출력된다.

데이터를 컨베이어 벨트에 올리는 작업은 << 연산자로 표현한다.

std::cout << "There are " << 219 << " ways I love you." << std::endl;