[C++] 개요

happyyeom·2025년 7월 3일

C++이란? C언어에 객체와 관련된 기능을 추가해 발전시킨 언어
추가로, C는 메모리 크기, 위치 등을 개발자가 직접 관리해야하지만 C++은 new, delete등을 이용하여 자동으로 메모리를 할당하거나 해제함. +레퍼런스(?), 가상함수, 연산자

C++ build과정

compile - 소스코드를 컴퓨터가 이해할 수 있는 코드로 변경하는 과정
pre-processing(전처리) - 컴파일하기전에 컴파일되기 전에 소스 코드를 변경하거나 확장함 (ex. #include, #define처럼 지시문을 해석하고 그에 따라 컴퓨터가 소스코드를 변경하고 이것을 컴파일러에게 전달함)

C++의 장점

C처럼 시스템에 직접 접근할 수 있고, simula처럼 데이터를 추상화하여 접근
애플리케이션 개발은 물론 시스템에 접근하여 하드웨어를 직접 제어가능
특유의 범용성?
비독점
높은 호환성과 안정성
지속적인 발전 - 이제는 AT&T에서 모든 권리 이양

객체지향 프로그래밍이란? 처리할 데이터와 처리 방법을 객체라는 논리 단위로 모두 포함하는것. 흔히 말해 특성과 동작을 설계도로 만들어 이를 재사용하는 것

UML로 자주 표현
UML - unified modeling language, 프로그램 설계 구조와 의도를 쉽게 전달하기 위한 언어
위는 클래스 다이어그램을 UML로 그린 그림이다. 클래스 다이어그램은 클래스 내부의 특성이나 클래스 사이의 관계를 UML로 표현한 것이다. 객체지향언어를 배울 때는 클래스 다이어그램에 익숙해져야 한다.

C++은 저수준 접근이 가능한데 위에서 말했듯 프로그램이 동작하는 시스템의 하드웨어에 직접 접근하여 제어하는 것을 말한다.(그래서 메모리 사용이 제한적인 임베디드 프로그래밍에도 적합하다.) 예를 들어 JAVA는 JVM위에서 실행되기 때문에 메모리 주소, 포트 접근이 불가하고 javascript도 브라우저나 node.js위에서 실행되서 하드웨어 접근이 전혀 없다.
또한 메모리도 개발자가 프로그래밍으로 직접 관리할 수 있다. 메모리를 직접 관리하는 것의 장점은 원하는 데이터를 즉시 처리할 수 있다는 것이다.
이는 불필요한 과정을 줄여 매우 효율적으로 프로그램을 개발할 수 있게 한다.
하지만 이런 점들이 프로그래밍을 어렵게 만드는 원인이기도 하다. 성능과 개발 편의성은 여러 면에서 상충하므로 무조건 어떤 언어를 사용해야 한다고 잘라서 말할 수 없다.

C++생태계를 구성하는 세 가지 요소
1) 언어표준 2) 커뮤니티 3)개발 환경과 라이브러리

profile
🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳🌳

0개의 댓글