1. C와 C++의 공통점
① 두 언어는 유사한 구문(Syntax)을 가지고 있다.
② 두 언어의 코드 구조가 같다.
③ 두 언어의 컴파일이 비슷하다.
④ 두 언어는 동일한 기본 구문을 공유한다. 거의 모든 C의 연산자와 키워드도 C++에 존재하며 동일한 작업을 수행한다.
⑤ C++는 C보다 문법이 조금 확장되어 있지만 기본 문법은 동일하다.
⑥ 둘 다 기본 메모리 모델은 하드웨어에 매우 가깝다.
⑦ 스택, 힙, 파일 범위 및 정적 변수에 대한 동일한 개념이 두 언어 모두에 존재한다.
2. c와 c++의 차이점
C++는 종종 C의 수퍼셋으로 여겨진다. C++는 또한 "클래스를 가진 C"로도 알려져 있기도 하다. 이것은 C++가 처음 만들어졌을 때 거의 사실에 가깝긴 했다. 그러나 시간이 지나면서 C는 현재 버전의 C++에는 없거나 여전히 C++의 어떤 버전으로도 만들어지지 않은 많은 기능을 선택하면서 발전했다. 즉, 갈수록 차이가 벌어졌다는 것이다. 물론 그럼에도 여전히 C++는 객체 지향 프로그래밍, 예외 처리, 템플릿 및 더 광범위한 표준 라이브러리를 추가하는 C의 수퍼셋이라는 시각도 존재한다.
추가로 하단의 표를 통해 C와 C++를 더욱 대조할 수 있을 것이다.
C | C++ |
1969년 ~ 1973년, Dennis Ritchie에 의해 개발되었다. | 1979년 Bjarne Stroustrup에 의해 개발되었다. |
C는 다형성, 캡슐화 및 상속을 지원하지 않는다. 이는 C가 객체 지향 프로그래밍을 지원하지 않음을 의미하는 것이기도 하다. | C++는 객체 지향 프로그래밍 언어이기 때문에 다형성, 캡슐화, 상속을 지원한다. |
C는 대부분 C++의 하위 집합이다. | C++는 대부분 C의 상위 집합이다. |
C의 키워드 수: * C90: 32 * C99: 37 * C11: 44 * C23: 59 |
C++의 키워드 수: * C++98: 63 * C++11: 73 * C++17: 73 * C++20: 81 |
코드 개발을 위해 C는 절차적 프로그래밍을 지원한다 . | C++는 절차 지향 프로그래밍 패러다임 과 객체지향 프로그래밍 패러다임을 모두 지원하기 때문에 하이브리드 언어로 알려져 있기도 하다 . |
C는 절차적 프로그래밍 언어이기 때문에 데이터와 기능이 분리되어 있다. | C++에서는 데이터와 함수가 객체 형태로 함께 캡슐화된다. |
C는 정보 숨기기를 지원하지 않는다. | 데이터 구조와 연산자가 의도한 대로 사용되도록 보장하기 위해 데이터는 캡슐화에 의해 숨겨진다. |
내장 데이터 유형은 C에서 지원된다. | 내장 및 사용자 정의 데이터 유형이 C++에서 지원된다. |
C는 절차적 프로그래밍 언어이기 때문에 함수 중심 언어이다. | C++은 객체지향 프로그래밍이기 때문에 객체지향 언어이다. |
C에서는 함수 및 연산자 오버로딩이 지원되지 않는다. | 함수 및 연산자 오버로드는 C++에서 지원된다. |
C의 함수는 구조 내부에 정의되지 않는다. | C++의 구조 내에서 함수를 사용할 수 있다. |
네임스페이스 기능은 C 내부에 없다. | 네임스페이스는 이름 충돌을 방지하기 위해 C++에서 사용된다. |
표준 IO 헤더는 stdio.h 이다 . | 표준 IO 헤더는 iostream.h 이다 . |
참조 변수는 C에서 지원되지 않는다. | 참조 변수는 C++에서 지원된다. |
C는 데이터에 초점을 맞추는 것보다는, 방법이나 프로세스에 초점을 맞춘다. | C++는 방법이나 절차에 초점을 맞추는 것에 대신하여, 데이터에 초점을 맞춘다. |
C에서는 동적 메모리 할당을 위한 malloc() 및 calloc() 함수와 메모리 할당 해제를 위한 free() 함수를 제공한다. | C++에서는 메모리 할당을 위한 new 연산자와 메모리 할당 해제를 위한 삭제 연산자를 제공한다. |
C에서는 예외 처리에 대한 직접적인 지원을 지원하지 않는다. | 예외 처리는 C++에서 지원된다. |
scanf() 및 printf() 함수는 C에서 입출력에 사용된다. | cin과 cout은 C++의 입출력에 사용된다 . |
C 구조에는 액세스 수정자가 없다. | C++ 구조에는 액세스 수정자가 있다. |
C는 하향식 접근 방식을 따른다. | C++는 상향식 접근 방식을 따른다. |
C 프로그래밍 언어에는 엄격한 유형 검사가 없다. | C++에서 엄격한 유형 체크인이 완료되었다. C 컴파일러에서 잘 실행되는 많은 프로그램은 C++ 컴파일러에서 많은 경고와 오류를 발생시킨다. |
명명된 이니셜라이저가 순서대로 나타날 수 있다. | 명명된 이니셜라이저는 구조체의 데이터 레이아웃과 일치해야 한다. |
파일 확장자는 .c이다. | 파일 확장자는 .cpp, .c++, .cc 또는 .cxx이다. |
C에는 32개의 키워드가 있다. | C++에는 97개의 키워드가 있다. |
메타 프로그래밍: macros + _Generic() | 메타 프로그래밍: 템플릿(macros는 여전히 지원되지만 권장되지는 않음) |
728x90
'C++' 카테고리의 다른 글
C++ 전처리기(#) 총정리 (1) | 2024.02.12 |
---|---|
C++ 주석 총정리 (1) | 2024.02.11 |
C++ 프로그램 작성의 시작, Hello World 학습 (1) | 2024.02.10 |
C++ 개발 환경 설정 (0) | 2024.02.09 |
C++ 프로그래밍 언어 개요 (0) | 2024.02.08 |