프로그래밍 언어/C++
C++) 1. C++ 언어
nomfang
2021. 8. 30. 04:11
728x90
반응형
C++
1979년 Bell 연구소의 Bjarne Stroustrup이 언어를 확장하여 만든 프로그래밍 언어
C with Classes 라는 이름으로 만들었다가 83년 부터 C++ 라는 이름 사용
주요 확장 내용
- 객체지향 프로그래밍: 클래스, 상속, 다형성, 동적 바인딩 등
- 일반화 프로그래밍: 템플릿
- 예외처리
C++ 언어의 표준
국제 표준화기구 (ISO)의 표준화 연혁
1989년 C++ 표준화 작업 착수
1998년 C++ 98
2003년 C++ 03
2007년 C++ TR1
2011년 C++ 11
2014년 C++ 14
2017년 C++ 17
C++ 프로그램의 작성
- C++ 소스 프로그램 파일: 처리하고자 하는 작업을 수행하는 C++ 프로그램 명령어들을 담고있는 파일
확장자: .cpp, .cxx, .C 등을 사용 - C++ 헤더파일: 클래스, 함수의 원형, 매크로, 전역변수, 상수 등 여러 소스 파일에 공통적으로 선언되는 내용을 담고 있는 파일
단독으로 컴파일 되지 않고, #include 라는 선행처리기 지시어에 의해 소스 프로그램 파일에 삽입되어 함께 컴파일 됨
확장자: .h 로 사용하는 것이 일반적
C++ 프로그램의 빌드
필요 도구
- 소스 프로그램 및 GUI 등의 편집기
- 컴파일러
- 링커
- 디버깅 도구
위와 같은 것들을 함께 가지고있는 통합개발환경(IDE)를 주로 사용
DEV C++, VISUAL STUDIO, elipse 등
C++ 기본 문법
#include <iostream> // 선행처리기 지시어
int main()
{
// 표준 출력 스트림, 문장을 출력
/* 주석을 이렇게
사용할 수도 있다 */
std::cout << "Hello World!\n"
<< std::end1;
return 0;
}
선행처리의 지시
- 선행처리: 프로그램을 컴파일하기 전에 소스 프로그램을 가공하여 컴파일러가 실제로 번역할 소스 프로그램을 만드는 것
- 선행처리기 지시어로 처리를 지시
- '#' 으로 시작
- 한 행에 한 개의 문장을 작성
- 대표적인 선행처리
- 헤더파일 삽입: #include
- 매크로 선언 및 해제: #define, #undef
- 조건부 컴파일: #if, #ifdef, #ifndef
함수
머리부, 몸체블록 으로 구성됨
머리부: 자료형 함수이름(인수)
입출력 스트림
표준 출력 스트림 객체
std::cout
- 데이터를 문자열로 변환하여 출력함
- 출력 연산자(삽입 연산자): <<
std::cout << "출력 스트림";
int a = 10;
std::cout << "a의 값은;
std::cout << a << "입니다." std::endl; // 이어서 사용 가능, endl은 개행
표준 입력 스트림 객체
std::cin
- 문자열을 입력 변수의 자료형의 값으로 변환하여 입력함
- 입력 연산자(추출 연산자): >>
int a;
char str[100];
std::cin >> a >> str;
명칭공간
특정한 이름들이 인식되는 프로그램의 부분
- 명칭공간의 정의
namespace MyNSpc { int count; // 명칭공간 내에 명칭을 선언하는 문장 나열 }
MyNSpc::count = 0; // 정의된 명칭 사용
### 명칭공간이란?
동일한 명칭이라도 서로 다른 명칭공간에서 정의되었다면 별개의 것으로 구분
전역 명칭공간: 특정 명칭곤간에 속하지 않는 기본 명칭공간
std 명칭공간: 표준 C++ 라이브러리의 명칭들의 정이되어 있는 명칭공간
namespace myNSp1 { int n = 10; }
namespace myNSp2 { int n = 20; }
int n = 30;
int main(){
int n = 40;
std::cout << myNSp1::n << std::endl; // namespace 1의 n
std::cout << myNSp2::n << std::endl; // namespace 2의 n
std::cout << ::n << std::endl; // 전역변수로 선언된 n
std::cout << n << std::endl; // 가장 가까운 n
}
### 자주 사용하는 명칭공간 - using
특정 명칭공간이나 명칭공간 내의 특정 이름을 자주 사용하는 경우 간소화 가능
using namespace std; // 명칭 공간 std 내의 모든 명칭에 대해 std를 생략 가능
using std::cout; // cout만 std를 생략 가능
반응형