많은 사람들이 마치 마치 마치 C / C ++를 쓰는 경향이 있습니다. 그것들은 많은 유사점을 공유하지만 분명히 동일하지 않습니다.
그러나 C와 C ++의 근본적인 차이점은 무엇입니까? C ++는 C의 향상된 버전입니까, 아니면 C ++에없는 기능이 C에 있습니까?
많은 사람들이 마치 마치 마치 C / C ++를 쓰는 경향이 있습니다. 그것들은 많은 유사점을 공유하지만 분명히 동일하지 않습니다.
그러나 C와 C ++의 근본적인 차이점은 무엇입니까? C ++는 C의 향상된 버전입니까, 아니면 C ++에없는 기능이 C에 있습니까?
답변:
다음 사항은 C ++과 관련이 있습니다.
C ++는 C가 처리 할 수없는 복잡성을 관리하기 위해 개발되었습니다. 예를 들어, C의 일반적인 문제는 캡슐화, 네임 스페이스 등이 없기 때문에 "변수 이름이 없어 질 수 있습니다"(실제로 말려서는 안 됨)였습니다.
또한 C에는 예외가 없으므로 오류 처리는 오류가 발생하기 쉽습니다. 라이브러리 사용자는 항상 func의 반환 값을 확인해야하지만 예외가 있으면 라이브러리 개발자는 단순히 프로그램 흐름이 중지되도록 예외를 throw합니다.
C ++는 생성자가 init 객체를 컴파일러에 의해 자동으로 호출하도록함으로써 도움을줍니다. 프로그래머가 초기화 해야하는 C 구조체와 달리 (따라서 오류가 발생하기 쉬운 다른 영역).
마지막으로, OOP에 의해 선전 된 많은 다른 장점들, 예를 들어 객체 재사용뿐만 아니라 소스 코드 등을 재사용 할 수있게하는 템플릿 및 제네릭과 같은 일반적인 프로그래밍 기반 개념이 있습니다.
그리고 여기에 나열하는 데 너무 많은 시간이 걸리는 많은 것들이 있습니다.
일반적으로 C에 존재하는 모든 것은 C ++에서 지원됩니다. 분명히 그 반대는 절대적으로 거짓입니다.
간단히 말해 C ++은 객체 지향적이므로 (예를 들어 클래스가 있음) C는 그렇지 않습니다.
C ++에는 부울 유형 C89가 없습니다.
그들은 다른 언어입니다. 그들은 대부분의 구문을 공유합니다.
_Bool
이고 bool
별명으로)이 있습니다.
long long
ISO C ++의 일부가 아닌 데이터 형식이 있습니다.
C99에는 C ++에 존재하지 않는 (적어도 정확히 같은 형식으로) 몇 가지 기능이 있습니다 (예 : 유연한 배열 멤버, 가변 길이 배열 등).
C99는 또한 C ++ 98/03 표준에는없는 라이브러리에 많은 것을 추가했습니다. 이 중 대부분은 C ++ 11에 추가되었습니다.
기본 방향 측면에서 C는 기본적으로 구조적 절차 적 프로그래밍을 지원합니다. C ++는 객체 지향 프로그래밍, 일반 프로그래밍 및 메타 프로그래밍 (컴파일 타임에 임의 계산 수행)뿐만 아니라이를 지원합니다. C ++ 11에서는 함수 프로그래밍 지원 (예 : 람다 식)으로 잘못 인식 될 수있는 몇 가지 비트와 조각을 추가합니다. C ++ 14는 몇 가지를 더 추가했지만 대부분 방향이 크게 바뀌기보다는 실제로 더 편리합니다.
개인적으로 템플릿이 C ++가 C에 추가하는 가장 중요한 기능이라고 생각합니다.
#define GENERATE_INTERFACE(T) T T##_func(T x);
; C의 안전한 오버로딩 / 템플릿입니다. 필자는 소멸자가 훨씬 더 중요한 기능인 C가 없다는 Thomas에 동의합니다. 그러나 소멸자는 종종 중요한 코드를 숨 깁니다. 네임 스페이스 (범위)가 가장 중요하다고 생각합니다.