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과 같은 객체 지향적 입출력 방식을 제공하며, classobject를 사용해 데이터를 구조화한다.

4. 객체 지향 프로그래밍(OOP)

  • C: 객체 지향 프로그래밍을 지원하지 않으며, 구조체(struct)로만 데이터를 묶을 수 있다.
  • C++: 클래스(class)와 객체(object)를 통해 캡슐화, 상속, 다형성 등의 OOP 개념을 지원한다.

5. 메모리 관리

  • C: 동적 메모리 할당에 malloc()free()를 사용한다. 메모리 관리가 수동적이다.
  • C++: newdelete 키워드를 사용하며, 더 나아가 스마트 포인터(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의 강력한 성능을 유지하면서 객체 지향적 접근을 통해 코드 관리가 용이하다.