C vs C++: 핵심 차이점 & 선택 가이드
C란?
C는 저수준 하드웨어 제어와 고수준 추상화를 결합한 중간 수준 프로그래밍 언어입니다. 1972년 벨 연구소에서 데니스 리치가 개발했으며 시스템 소프트웨어용으로 설계되었고 현재도 펌웨어와 이식성 있는 애플리케이션에 널리 쓰입니다.
C++이란?
C++은 C에 객체 지향 기능, 템플릿, 예외 처리 등을 추가하여 확장했습니다. 흔히 "클래스가 있는 C"라고 불리며 절차적, 객체 지향 패러다임 모두 지원하는 중간 수준 언어입니다.
핵심 차이점 한눈에 보기
- 프로그래밍 패러다임: C는 절차적; C++은 객체 지향
- 포인터 vs 참조: C는 포인터만 지원; C++은 포인터와 참조 모두 지원
- 함수 오버로딩: C는 불가; C++은 가능
- 데이터 타입: C는 내장 타입만; C++은 문자열, 불리언, 사용자 정의 타입 추가
- 프로그래밍 접근: C는 탑다운 흐름; C++은 바텀업, 컴포넌트 주도 설계 권장
- 입출력: C는
scanf/printf; C++은 cin/cout
시각적 요약

| 기능 | C | C++ |
| 프로그래밍 유형 | 절차적 | 객체 지향 |
| 프로그래밍 접근 | 탑다운 | 바텀업 |
| 파일 확장자 | .c | .cpp |
| 프로그램 구조 | 함수 | 클래스 & 객체 |
| 구조체 | 멤버 함수 없음 | 멤버 함수 포함 가능 |
| 인라인 함수 | 미지원 | 지원 |
| 입출력 함수 | scanf / printf | cin / cout |
| 데이터 캡슐화 | 없음 | 클래스로 캡슐화 |
| 포인터 지원 | 포인터만 | 포인터 & 참조 |
| 변수 선언 | 함수 시작 시 | 함수 내 어디든 |
| 함수 오버로딩 | 불가 | 가능 |
| 문자열/불리언 타입 | 없음 | 있음 |
| 예외 처리 | 네이티브 미지원 | try/catch |
| 기본 매개변수 | 불가 | 가능 |
| 네임스페이스 | 없음 | 있음 |
| 헤더 파일 | stdio.h | iostream |
| 키워드 | 32개 | 52개 |
| GUI 프레임워크 | GTK | Qt |
| 상속 | 없음 | 있음 |
| 다형성 | 없음 | 있음 |
| 가상 함수 | 있음 | 없음 (virtual 키워드로 사용) |
| 메모리 할당 | malloc()/calloc() | new/delete |
| 전역 변수 | 다중 선언 허용 | 불허 |
| 부분집합/상위집합 | C는 C++ 부분집합 (C++ 코드 실행 불가) | C++은 상위집합 (대부분 C 코드 실행 가능) |
프로젝트 필요에 따라 C와 C++ 중 선택하세요. 저수준 하드웨어 제어와 최대 이식성이 중요하면 C가 나을 수 있습니다. 객체 지향 설계, 템플릿, 견고한 표준 라이브러리 이점이 필요하면 C++이 더 큰 추상화와 안전성을 제공합니다.