본문 바로가기

카테고리 없음

1강 C++ 언어의 소개

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;
}