CS/Language

[Language] C++ 언어 특징

hanseongbugi 2024. 1. 26. 14:29

C++ 설계 목적

  • C 언어와의 호완
    • C 언어로 작성된 프로그램과의 호완성 유지
    • C 언어의 분법적 체계를 그대로 계승
    • C 언어로 작성되어 컴파일된 목적 파일(C object file)이나 Library를 C++ 프로그램에서 링크하여 사용할 수 있다.
  • 객체 지향
    • 소프트웨어의 재사용을 통해 소프트웨어 생산성을 높였다.
    • 복잡하고 큰 규모의 소프트웨어 작성, 관리, 유지 보수를 쉽게 하기 위해서 캡슐화, 상속, 다형성 등의 객체 지향적 개념을 도입
  • 타입 체크
    • 타임 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다.
  • 효율성 저하 최소화
    • 실행 시간의 효율성 저하를 최소화
    • 멤버 함수에 인라인 함수를 도입하는 등 함수 호출로 인한 시간 저하를 막음

C언어에 추가한 기능

  • 인라인 함수
    • 자주 호출되는 함수의 경우, 호출 대신 함수 코드를 확장 삽입. 실행 시간 단축에 유용
  • 함수 중복
    • 매개 변수의 개수나 타입이 서로 다른 동일한 이름의 함수 선언 가능(오버로딩)
  • 디폴트 매개 변수
    • 매개 변수에 값이 전달되지 않는 경우, 디폴트 값이 전달되도록 함수 선언 가능
  • 참조
    • 변수에 별명을 붙여 변수 공간을 같이 사용할 수 있는 참조의 개념을 도입
  • 참조에 의한 호출
    • 함수 호출시 참조를 전달할 수 있다.
  • new와 delete 연산자
    • 동적 메모리 할당, 해제를 위한 두 연산자 도입
  • 연산자 재정의
    • 기존의 연산자에 새로운 연산을 정의할 수 있다.
  • 제네릭 함수의 클래스
    • 함수나 클래스를 데이터 타입에 의존하지 않고 일반화 시킬 수 있다.

절차 지향 VS 객체 지향

  • 절차 지향 프로그래밍 (Procedural Programming)
    • 실행하고자 하는 절차대로 일련의 명령어를 나열하여 프로그래밍하는 방법
    • 작업을 절차로 표현하여 명령들의 순서나 흐름에 중점을 둔다.
    • 흐름도를 설계하여 흐름도상의 동작들을 함수로 작성 후 흐름도에 따라 동작이 실행되도록 작성
  • 객체 지향 프로그래밍 (Object-Oriented Programming, OOP)
    • 물체 간의 관계, 상호 작용 등으로 복잡하게 구성된 실세계에 가깝게 프로그래밍을 모델링
    • 실제 세계의 물체를 객체로 표현
    • 객체들의 관계 상호 작용 객체 지향 기법으로 구현

컴파일과 링킹

  • 컴파일 (Compile)
    • C++ 컴파일러를 이용하여 소스 프로그램을 컴파일하면 C++ 컴파일러는 프로그램이 문법에 맞게 작성되었는지 검사 후, 기계어 코드로 변환하여 목적 파일(Object File)을 생성
    • 목적 파일(Object File)이 생성되었다고 해도 이 파일은 바로 실행될 수 없다.
    • 목적 파일(Object File)에는 C++ 프로그램에 있는 함수, 객체, 데이터 등의 참조 표시만 있을 뿐 코드를 포함하지 않는다.
  • 링킹
    • 어떤 목적 파일이 참조하는 C++ 표준 라이브러리나 다른 목적 파일 속에 있는 함수, 객체, 데이터를 포함하여 실행에 필요한 기계어 코드를 확보해 하나의 실행파일(.exe)로 만드는 과정
    • 실행 파일에는 실행에 필요한 모든 요소들이 들어있다.
    • 만약 링킹 과정 동안 목적 파일(Object File)에서 참조하는 코드를 발견하지 못하면 링크 오류가 발생

Generic Programming (제네릭 프로그래밍)

  • 템플릿으로 대변되는 제네릭 프로그래밍 특성이 C언어와 C++의 큰 차이점
  • template 키워드로 선언한다.
  • 템플릿 함수, 템플릿 클래스라고도 부른다.

 

 

참조

https://velog.io/@limce/C-C-%EC%96%B8%EC%96%B4-%ED%8A%B9%EC%A7%95

 

[C++] C++ 언어 특징

소스 레벨 호환성:C 언어로 작성된 프로그램과의 호환성 유지C 언어의 문법적 체계를 그대로 계승링크 레벨 호환성:C 언어로 작성되어 컴파일된 목적 파일(C object file)이나 Library를 C++ 프로그램

velog.io

 

https://4z7l.github.io/2020/07/16/cpp-1.html

 

[C++] C++ 시작하기 - 특징, 객체 지향, 컴파일과 링킹 - HERSTORY

1. C++ 언어의 특징 1-1. C++ 언어의 주요 설계 목표 C언어와의 호환성 : 기존에 작성된 C 프로그램을 그대로 사용할 수 있도록 C언어의 문법적 체계를 그대로 계승함 객체 지향 : 소프트웨어의 재사

4z7l.github.io