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 등을 만들고 링킹 단계에서 같은 영역끼리 합쳐준다.
- 리눅스 환경에서의 실행파일:
※ 질문, 개선점, 오류가 있다면 댓글로 남겨주세요 :)