티스토리 뷰

C++

C++ : 11 시작

채애 2023. 9. 17. 17:59

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
댓글