티스토리 뷰
C++11 이전 - 그냥 'C++'
C++11 이후 - 모던C++
C++ 언어는 C언어가 제공하는 이식성과 높은 처리 속도를 그대로 보장하고 자 함.
C언어에 없는 객체 지향 언어의 클래스와 연산자 오버로딩, 템플릿이나 예외처리 등의 개념을 도입.
C++언어가 C언어 보다 느린 이유 : 템플릿이나 객체 지향 언어가 제공하는 기능에 의해 발생한다.
객체지향 언어의 특성상 데이터 타입 변환이나 다형성의 기능을 지원하기 위해,
다수의 메모리 테이블이 추가되면서 더 많은 메모리가 필요하며,
객체가 차지하는 메모리를 관리하는 기능들이 추가되면서 C언어의 프로그램보다 느려졌다.
C++11
C++11 에는 STL (표준 템플릿 라이브러리 ( Standard Template Library )) , 람다, function클래스로 제작되는 함수 객체,
함수를 비동기시킬 수 있는 future 클래스, 클래스 템플릿, 함수 템플릿 을 추가 함.
C++ 프로그램의 빌드 과정
① 전처리 단계 ( Preprocessing )
- 소스를 문법적으로 해석, 구문 에러의 존재 여부 등을 평가.
- 주석 제거
- #include , #define , #ifdef , using , typedef 와 같은 키워드에 따라 파일들을 읽고
실제 컴파일이 가능하도록 소스를 만드는 작업을 수행.
② 컴파일 단계 ( Compiling )
- 바이너리 코드 (기계어) → 어셈블리 코드 로 만드는 작업을 수행.
③ 어셈블링 단계 ( Assembling )
- 어셈블리 코드 → 오브젝트 코드 로 만드는 작업을 수행.
④ 링크 단계 ( Linking )
- 오브젝트 코드와 C++언어의 표준 공유 라이브러리를 사용하여 실행 가능한 프로그램을 만듬.
▷ static 지정자
변수가 클래스 내부에 존재하더라도 지역 변수가 아닌 전역 변수처럼 사용이 가능한 변수.
* 정적 변수 ( static variables )
전역 변수와 정적 변수는 메모리에 로드되는 순간에 변수가 생성, 기본 값으로 초기화 된다.
* 함축적인 초기화 ( implicit Initialization )
< 주의 >
전역 변수처럼 사용하더라도, 함수 외부에서 호출될 수 없다.
▷ extern 지정자
외부 프로그램에 의해 제작되고 컴파일된 실행 모듈이나 라이브러리 내 존재하는 전역 변수.
▷ thread_local 지정자
스레드 내 지역 변수로 사용하는 변수.
'시작하자! C++17 프로그래밍' 책을 기반으로 작성하였습니다.
'C++' 카테고리의 다른 글
C++ : 상수표현식 constexpr / const 상수와의 차이점 (0) | 2024.01.20 |
---|
- Total
- Today
- Yesterday
- 백준파이썬
- SUM함수
- 네이버클라우드플랫폼
- 파이썬sum
- SQLD 2과목
- SQLD
- 파이썬for문
- 40회 SQLD
- 알고리즘
- NaverCloudPlatform
- python별찍기
- 파이썬
- SQLD40회
- python문법
- Python
- Unity GameObject 생성
- SQLD1과목
- 백준
- BAEKJOON
- f-string
- 파이썬 입출력
- 파이썬입출력
- range함수
- 백준 별찍기
- 파이썬문법
- 데이터 모델링
- 백준별찍기
- SQLD 1과목
- 별 찍기
- 데이터베이스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |