Language/C++

[TheSSEN/C++] 0. C와 C++

coco_daddy 2025. 1. 27. 11:13
※ LIG Nex1 The SSEN Embedded SW School에서 진행된 내용을 정리한 포스팅입니다.

C vs C++

  • C언어
    • 구조적 프로그래밍
    • 시간의 흐름에 따라 동작한다.
    • 구조체
    • 변수 선언 위치가 고정되어있다

 

  • C++
    • 객체지향 프로그래밍
    • 현실 세계가 복잡해지면서 정보의 양이 많아짐에 따라 고안되었다.
    • 구조체에 대응되는 클래스
      • 함수 추가 -> 전역함수만 있었던 C와는 달리 클래스는 멤버 함수를 가질 수 있다.
      • 함수 오버로딩, 오버라이딩
      • 생성자와 소멸자
      • 상속
    • 변수 선언 위치가 자유롭다.
    • new와 delete
    • 참조변수(&): 변수의 별칭
      • C에서의 call by reference가 call by value로 전환했다.

  • 작은 프로그램인 경우 C로 작성하는 것이 적합하다.
  • 중대형 프로그램인 경우 관리를 위해 객체 지향 언어를 사용해야 한다.

 

객체지향 프로그래밍

  • 진실로 객체 지향적으로 사고하고 프로그래밍을 할 수 있는가?
  • 객체
    • 현실 세계에서 모델링 하려고 하는 구성 요소
  • 객체를 정의 하고, 객체의 관계를 정의하는 방식
    • 맥락에 따라 같은 객체에 대한 모델링 방식이 다르다.
  • 언어에 대한 책을 정독하는 것보다 코드를 직접 짤 수 있어야 한다.
  • 클래스의 1차적인 목표
    • 캡슐화 -> 하나의 객체에 대한 정보를 하나의 변수에 담는 것.

 

프로그램 

  • 관련있는 명령어의 집합
  • c/c++: 컴파일 -> 실행 가능한 파일(.exe) -> 실행 -> Startup Code(초기화 코드) ->
    • 리눅스 환경에서의 실행파일: .elf
    • 소스코드를 읽고 할당하여 관련있는 영역(RAM)에 얹어준다.
    • 분할 컴파일 시, 각각 파일은 컴파일 되어 각각의 .data, .bss 등을 만들고 링킹 단계에서 같은 영역끼리 합쳐준다.

 

※ 질문, 개선점, 오류가 있다면 댓글로 남겨주세요 :)