C와C++
C++는 AT&T 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup)이 C 언어를 확장하여 만든 객체지향 프로그래밍 언어이다. 따라서 C가 가지고 있는 모든 기능이 C++ 안에 포함되어 있다.
C는 절차적 프로그래밍 언어
C++는 객체지향 프로그래밍 언어
선행처리
C++ 소스 프로그램은 컴파일되기 전에 먼저 선행처리 과정을 거친다. 이 과정은 소스 프로그램을 가공하여 실제로 컴파일러가 번역할 소스 프로그램을 만드는데, 선행처리기가 이 작업을 수행한다. 선행처리기가 어떤 작업을 할 것인가를 지시하는 명령어를 선행처리기 지시어라고 한다.
선행처리기 지시어는 '#'으로 시작하며, 한 행에 한 문장씩 작성한다.
#include : 헤더 파일을 소스 프로그램에 결합하기
#definde, #undef : 매크로 선언 및 해제
#if, #ifdef, #ifndef : 조건부 컴파일
#include <header> //표준 include 경로에 존재하는 파일
#include "header" //현재 위치에 존재하는 파일
만일 헤더 파일이 미리 설정된 표준 포함 경로에 존재하는 경우 '<'와 '>' 사이에 파일 이름을 넣는다.
입출력 스트림
C++의 iostream 표준 라이브러리를 통해 문자 형태의 입출력을 할 수 있다. 스트림은 일련의 데이터 열을 의미하는데, 표준 출력 스트림 cout은 콘솔 화면에 출력하는 기능을, cin은 키보드를 통해 입력하는 기능을 제공한다.
cout으로 데이터를 출력할 때에는 삽입 연산자(inserter) '<<'를 사용한다.
std::cout << value;
std::endl이라는 조작어는 행의 끝을 알리는 문자를 출력함으로써, 다음에 출력하는 내용은 아래 행에 출력이 되게 한다.
역으로 스트림 입력은 cin에 추출 연산자(extractor) '>>'를 사용한다.
std::cin >> variable;
명칭공간
명칭공간(namespace)이란 특정한 이름들이 인식되는 프로그램의 부분을 의미한다. C++에서 하나의 명칭은 한 번만 정의되어야 한다.
#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;
}
특정 명칭공간에 속하지 않는 영역은 프로그램 전체의 영역인 전역 명칭공간에 해당된다.
mian() 함수의 몸체 블록은 전역 명칭공간 안에 포함되어 있다. 어떤 명칭공간에 포함된 명칭공간에서는 그 명칭공간을 포함하는 명칭공간의 이름들을 모두 사용할 수 있다. 만일 안에 포함된 명칭공간에 그 명칭공간을 둘러싼 명칭공간에 정의된 이름을 다시 정의하면 안쪽 명칭공간의 이름이 바깥쪽 명칭공간의 이름을 가린다.(13행)
C++에 제공되는 표준 라이브러리의 이름들은 모두 std('standard'를 줄인 이름)라는 명칭공간에 포함된다.
using namespace namespace-name; //특정 명칭공간 내의 모든 이름을
using namespace-name::name; //특정 명칭공간내의 특정 이름을
//명칭공간을 지정하지 않고 사용할 수 있게 한다.
출처 : 전중남·이병래. 「C++프로그래밍」. 한국방송통신대학교출판문화원. 2020
'프로그래밍언어 > C++' 카테고리의 다른 글
[C++] 클래스와 객체(2) (0) | 2023.09.05 |
---|---|
[C++] 클래스와 객체(1) (0) | 2023.09.04 |
[C++] 함수 (0) | 2023.08.30 |
[C++] C++ 언어의 기초 (2) - 흐름제어, 구초체와 클래스, 포인터 (0) | 2023.08.23 |
[C++] C++ 언어의 기초 (1) - 기본 자료형, 연산자 (0) | 2023.08.23 |