2025 03 05 wiki ‐ C와 C 의 차이점 - 2025CPPGroup2/Task GitHub Wiki
C와 C++의 차이점
1. 기본 개념
- C: 1972년에 데니스 리치에 의해 개발된 절차적 프로그래밍 언어. 주로 시스템 소프트웨어, 운영체제(OS), 임베디드 시스템 개발에 사용된다.
- C++: 1983년 비야네 스트롭스트룹에 의해 C를 기반으로 개발된 객체 지향 프로그래밍(OOP) 언어. C의 기능을 확장하여 객체 지향적 접근을 제공하며, 게임 개발, 애플리케이션 개발 등 다양한 분야에서 사용된다.
2. 프로그래밍 패러다임
- C: 절차 지향 언어로, 프로그램의 흐름이 순차적으로 실행된다. 함수와 데이터가 분리된 구조.
- C++: 다중 패러다임 언어로, 절차 지향뿐만 아니라 객체 지향 프로그래밍(OOP)을 지원한다. 클래스와 객체를 사용해 데이터와 메서드를 묶을 수 있다.
3. 문법 차이
- C:
printf()
와 같은 기본적인 입출력 방식과struct
를 통한 데이터 구조 표현을 사용한다. - C++:
std::cout
,std::cin
과 같은 객체 지향적 입출력 방식을 제공하며,class
와object
를 사용해 데이터를 구조화한다.
4. 객체 지향 프로그래밍(OOP)
- C: 객체 지향 프로그래밍을 지원하지 않으며, 구조체(
struct
)로만 데이터를 묶을 수 있다. - C++: 클래스(
class
)와 객체(object
)를 통해 캡슐화, 상속, 다형성 등의 OOP 개념을 지원한다.
5. 메모리 관리
- C: 동적 메모리 할당에
malloc()
과free()
를 사용한다. 메모리 관리가 수동적이다. - C++:
new
와delete
키워드를 사용하며, 더 나아가 스마트 포인터(std::unique_ptr
,std::shared_ptr
) 등의 기능을 통해 메모리 관리를 더 효율적으로 할 수 있다.
6. 입출력
- C:
stdio.h
라이브러리를 사용하여printf()
,scanf()
와 같은 함수로 입력과 출력을 처리한다. - C++:
iostream
라이브러리를 사용하여std::cout
,std::cin
으로 객체 지향적인 방식으로 입출력을 처리한다.
7. 성능
- C: 빠르고 효율적인 코드 작성이 가능하며, 시스템 프로그래밍에서 성능을 중시하는 프로젝트에서 자주 사용된다.
- C++: 객체 지향적 특성과 다양한 기능들로 인해 약간의 성능 저하가 있을 수 있지만, 최적화가 가능하며 고성능 애플리케이션을 개발할 수 있다.
8. 사용 용도
- C: 운영체제(OS), 임베디드 시스템, 하드웨어 제어 등 시스템 레벨에서 많이 사용된다.
- C++: 게임 개발, 애플리케이션 개발, 그래픽 프로그래밍, 과학 컴퓨팅 등 다양한 고급 애플리케이션 개발에 사용된다.
9. 표준 라이브러리
- C:
stdlib.h
,stdio.h
,string.h
등 기본적인 라이브러리를 제공한다. - C++: **STL(Standard Template Library)**을 포함하여
vector
,map
,list
등 다양한 자료구조와 알고리즘을 제공한다.
10. 한줄요약
- C: 시스템 프로그래밍, 운영체제 개발, 임베디드 시스템 등 성능이 중요한 분야에서 유리하다.
- C++: 객체 지향 프로그래밍과 고급 기능이 필요한 게임 개발이나 애플리케이션 개발에 적합하다. C++은 C의 강력한 성능을 유지하면서 객체 지향적 접근을 통해 코드 관리가 용이하다.