c vs c 39 main differences between c
이 자습서에서는 다양한 기능 측면에서 C 대 C ++ 언어 간의 주요 차이점을 설명합니다.
C ++ 언어는 C 언어의 하위 집합입니다.
C ++는 처음에 C 언어의 확장으로 설계되었습니다. 따라서 C에서 파생 된 절차 적 언어 기능 외에도 C ++는 상속, 다형성, 추상화, 캡슐화 등과 같은 객체 지향 프로그래밍 기능도 지원합니다.
이 튜토리얼에서는 C와 C ++ 언어의 주요 차이점에 대해 설명합니다.
추천 읽기 => 초보자를위한 완벽한 C ++ 가이드
오라클 성능 튜닝 인터뷰 질문 및 답변
학습 내용 :
C 및 C ++의 주요 기능
차이점을 살펴보기 전에 C 및 C ++ 언어의 일부 기능을 나열 해 보겠습니다.
C의 특징 및 특성
- 절차 적
- 상향식 접근.
- 시스템 프로그래밍 언어.
- 클래스 및 개체를 지원하지 않습니다.
- 포인터 지원
C ++의 특징 및 속성
- 객체 지향
- 상향식 접근 방식
- 속도가 더 빠릅니다.
- 표준 템플릿 라이브러리 형태의 풍부한 라이브러리 지원.
- 포인터 및 참조를 지원합니다.
- 컴파일
C 대 C ++의 주요 차이점
아래에 나열된 것은 C 대 C ++의 주요 차이점입니다.
# 1) 프로그래밍 유형 :
C는 프로그램이 기능을 중심으로 회전하는 절차 적 언어입니다. 전체 문제는 여러 기능으로 나뉩니다. 프로그램의 주요 초점은 작업을 수행하는 기능 또는 절차에 있습니다.
반대로 C ++는 객체 지향 프로그래밍 언어입니다. 여기서 문제의 데이터가 주요 초점이며 클래스는이 데이터를 중심으로 구축됩니다. 함수는 데이터에서 작동하며 데이터에 밀접하게 연결됩니다.
# 2) 프로그래밍 접근 방식 :
C는 절차 적 언어이므로 하향식 프로그래밍 방식을 따릅니다. 여기서 우리는 문제를 가지고 직접 해결할 수있는 단일 하위 문제를 찾을 때까지 하위 문제로 나눕니다. 그런 다음 솔루션을 결합하여 주요 솔루션을 얻습니다.
C ++는 상향식 프로그래밍 방식을 따릅니다. 여기서는 저수준 디자인이나 코딩으로 시작한 다음이 저수준 디자인을 기반으로 고수준 솔루션을 얻습니다.
# 3) 애플리케이션 개발 :
C 언어는 임베디드 시스템의 프로그래밍 또는 저수준 구현에 유용합니다.
반면에 C ++는 서버 측 애플리케이션, 네트워크 애플리케이션 또는 게임과 같은 애플리케이션에 더 적합합니다.
# 4) 파일 확장자 :
C로 작성된 프로그램은 일반적으로 '.c'확장자로 저장되고 C ++ 프로그램은 '.cpp'확장자로 저장됩니다.
# 5) 서로의 호환성 :
C ++는 개발 된 C의 하위 집합이며 대부분의 절차 구조를 C 언어에서 가져옵니다. 따라서 모든 C 프로그램은 C ++ 컴파일러로 잘 컴파일되고 실행됩니다.
그러나 C 언어는 C ++의 객체 지향 기능을 지원하지 않으므로 C ++ 프로그램과 호환되지 않습니다. 따라서 C ++로 작성된 프로그램은 C 컴파일러에서 실행되지 않습니다.
# 6) 다른 언어와의 호환성 :
C ++ 언어는 일반적으로 다른 일반 프로그래밍 언어와 호환되지만 C 언어는 그렇지 않습니다.
# 7) 코딩 용이성 :
C는 실습 언어라고 말할 수 있으며 원하는 방식으로 프로그래밍 할 수 있습니다. C ++는 고수준 프로그램을 코딩하는 데 도움이되는 고수준 개체 지향 프로그래밍 구조로 구성됩니다.
따라서 C가 쉽다고 말하면 C ++도 코딩하기 쉽습니다.
# 8) 데이터 보안 :
C에서는 데이터보다는 기능이나 절차에 중점을 둡니다. 따라서 데이터 보안에 관한 한 C에서는 무시할 수 있습니다.
C ++에서 우리가 클래스와 객체를 다룰 때 프로그램의 주요 빌딩 블록은 데이터입니다. 따라서 데이터는 클래스, 액세스 지정자, 캡슐화 등을 사용하여 엄격하게 보호됩니다.
# 9) 프로그램 부문 :
C의 프로그램은 기능과 모듈로 나뉩니다. 이러한 함수와 모듈은 실행을 위해 주 함수 또는 기타 함수에 의해 호출됩니다.
C ++ 프로그램은 클래스와 객체로 나뉩니다. 문제는 클래스로 설계되었으며 이러한 클래스의 객체는 주요 기능에 의해 생성되고 실행되는 실행 단위입니다.
# 10) 표준 I / O 작업 :
표준 장치에서 데이터를 읽고 쓰기위한 C의 표준 입출력 작업은 각각 'scanf'및 'printf'입니다.
C ++에서는 'cin'을 사용하여 표준 입력 장치에서 데이터를 읽어오고 'cout'을 사용하여 출력 장치로 인쇄합니다.
# 11) 집중 / 강조 :
절차 적 언어이기 때문에 C는 문제 해결을위한 일련의 단계 또는 절차에 더 중점을 둡니다.
반면 C ++는 객체 지향적이므로 솔루션을 구축 할 객체와 클래스에 더 중점을 둡니다.
# 12) main () 함수 :
C ++에서는 다른 지점에서 main () 함수를 호출 할 수 없습니다. main () 함수는 단일 실행 지점입니다.
그러나 C 언어에서는 코드의 다른 함수에 의해 호출되는 main () 함수를 가질 수 있습니다.
# 13) 변수 :
변수는 C에서 펑션 블록의 시작 부분에 선언되어야합니다. 반대로, 코드에서 사용되기 전에 선언 된 경우 C ++ 프로그램의 어느 곳에서나 변수를 선언 할 수 있습니다.
# 14) 전역 변수 :
C 언어는 전역 변수의 다중 선언을 허용합니다. 그러나 C ++에서는 전역 변수를 여러 번 선언 할 수 없습니다.
# 15) 포인터 및 참조 변수 :
포인터는 메모리 주소를 가리키는 변수입니다. C와 C ++ 모두 포인터와 포인터에서 수행되는 다양한 작업을 지원합니다.
참조는 변수의 별칭 역할을하며 변수와 동일한 메모리 위치를 가리 킵니다.
C 언어는 참조가 아닌 포인터 만 지원합니다. C ++는 포인터와 참조를 지원합니다.
# 16) 열거 :
C ++뿐만 아니라 C에서도 열거 형을 선언 할 수 있습니다. 그러나 C에서 열거 형 상수는 Integer 유형입니다. 안전성없이 정수 상수를 선언하는 것과 같습니다.
C ++에서는 열거 형이 다릅니다. 그들은 별개의 유형입니다. 따라서 열거 형 변수에 정수형을 할당하려면 명시 적 유형 변환이 필요합니다.
그러나 열거 형은 정수형 승격 또는 암시 적 변환을 허용하므로 정수형의 변수에 열거 형 값을 할당 할 수 있습니다.
# 17) 문자열 :
문자열에 관한 한 'char []'선언은 문자열 배열을 선언합니다. 그러나 위와 같이 선언 된 문자열이 함수 사이에 전달되면 이러한 문자열이 변경 가능하므로 다른 외부 함수에 의해 변경되지 않을 것이라는 보장이 없습니다.
C ++는 변경 불가능한 문자열을 정의하는 문자열 데이터 유형을 지원하므로 C ++에는 이러한 단점이 없습니다.
# 18) 인라인 기능 :
인라인 함수는 C에서 지원되지 않습니다. C는 일반적으로 실행 속도를 높이기 위해 매크로와 함께 작동합니다. 반면에 C ++에서는 인라인 함수와 매크로가 사용됩니다.
# 19) 기본 인수 :
함수 호출시 매개 변수가 지정되지 않은 경우 기본 인수 / 매개 변수가 사용됩니다. 함수 정의에서 매개 변수에 대한 기본값을 지정합니다.
C 언어는 기본 매개 변수를 지원하지 않습니다. C ++는 기본 인수 사용을 지원합니다.
# 20) 구조 :
C 및 C ++의 구조는 동일한 개념을 사용합니다. 그러나 차이점은 C에서는 함수를 구성원으로 포함 할 수 없기 때문입니다.
C ++를 사용하면 구조체가 멤버로 함수를 가질 수 있습니다.
# 21) 클래스 및 객체 :
C는 절차 적 언어이므로 클래스와 객체의 개념을 지원하지 않습니다.
반면에 C ++는 클래스와 객체의 개념을 지원하며 C ++의 거의 모든 애플리케이션은 클래스와 객체를 중심으로 구축됩니다.
# 22) 데이터 유형 :
C는 내장 및 기본 데이터 유형을 지원합니다. 이와 반대로 C ++는 내장 및 기본 데이터 유형 외에도 사용자 정의 데이터 유형을 지원합니다.
이 외에도 C ++는 C에서 지원하지 않는 부울 및 문자열 데이터 유형도 지원합니다.
# 23) 함수 오버로딩 :
함수 오버로딩은 이름은 같지만 매개 변수가 다른 둘 이상의 함수 또는 매개 변수 목록 또는 매개 변수 순서를 가질 수있는 기능입니다.
이것은 객체 지향 프로그래밍의 중요한 기능이며 C ++에 있습니다. 그러나 C는이 기능을 지원하지 않습니다.
# 24) 상속 :
상속은 또한 C가 아닌 C ++에서 지원하는 객체 지향 프로그래밍의 중요한 기능입니다.
# 25) 기능 :
C는 기본 매개 변수 등과 같은 기본 정렬 기능을 지원하지 않습니다. C ++는 기본 정렬 기능을 지원합니다.
# 26) 네임 스페이스 :
네임 스페이스는 C에서 지원되지 않지만 C ++에서 지원됩니다. .
# 27) 소스 코드 :
C는 무엇이든 프로그래밍 할 수있는 자유 형식 언어입니다. C ++는 C에서 파생되었으며 소스 코드와 관련하여 더 효율적으로 만드는 객체 지향 프로그래밍 기능도 있습니다.
# 28) 추상화 :
추상화는 구현 세부 정보를 숨기고 필요한 인터페이스 만 사용자에게 노출하는 방법입니다. 이것은 객체 지향 프로그래밍의 차별화 된 기능 중 하나입니다.
C ++는이 기능을 지원하지만 C는 지원하지 않습니다.
# 29) 캡슐화 :
캡슐화는 외부 세계의 데이터를 캡슐화하는 기술입니다. 이것은 정보를 숨기는 데 도움이됩니다.
C ++는 데이터와이 데이터에서 작동하는 함수를 단일 단위로 묶는 클래스를 사용합니다. 이것은 캡슐화입니다. C에는이 기능이 없습니다.
# 30) 정보 숨기기 :
추상화 및 캡슐화 기능은 필요한 세부 사항 만 노출하고 구현 등과 같은 세부 사항을 사용자에게 숨겨 정보 숨기기를 도울 수 있습니다. 이렇게하면 프로그램의 데이터 보안을 강화할 수 있습니다.
C ++는 데이터에 중점을두고 정보 숨기기를 위해 추상화 및 캡슐화를 사용합니다.
C는 데이터에 중점을 두지 않고 정보 숨김을 다루지 않습니다.
# 31) 다형성 :
다형성은 단순히 하나의 객체가 여러 형태를 가지고 있으며 객체 지향 프로그래밍의 필수 기능임을 의미합니다. 객체 지향 언어 인 C ++는 다형성을 지원합니다.
C는 객체 지향 프로그래밍을 지원하지 않으며 다형성을 지원하지 않습니다. 그러나 함수 포인터를 사용하여 C에서 함수의 동적 디스패치를 시뮬레이션 할 수 있습니다.
# 32) 가상 기능 :
런타임 다형성이라고도하는 가상 함수는 런타임에 함수 호출을 해결하는 데 사용되는 기술입니다. 이것은 C가 아닌 C ++에서 지원하는 객체 지향 프로그래밍의 또 다른 기능입니다.
# 33) GUI 프로그래밍 :
GUI (Graphical User Interface) 관련 프로그래밍의 경우 C는 Gtk 도구를 사용하고 C ++는 Qt 도구를 사용합니다.
# 34) 매핑 :
함수와 데이터의 매핑에 관한 한 C 언어는 데이터에 초점을 맞추지 않기 때문에 매우 복잡합니다.
반면 C ++는 데이터와 함수를 함께 묶는 클래스와 객체를 지원하므로 데이터와 함수를 잘 매핑합니다.
# 35) 메모리 관리 :
C와 C ++ 모두 수동 메모리 관리 기능이 있지만 메모리 관리가 수행되는 방법은 두 언어에서 다릅니다.
C에서는 malloc (), calloc (), realloc () 등과 같은 함수를 사용하여 메모리를 할당하고 free () 함수를 사용하여 메모리를 해제합니다. 그러나 C ++에서는 new () 및 delete () 연산자를 사용하여 각각 메모리를 할당 및 할당 해제합니다.
# 36) 기본 헤더 :
기본 헤더에는 주로 입력-출력 등을 위해 프로그래밍 언어에서 사용되는 공통 함수 호출이 포함됩니다.
C에서는‘stdio.h’가 기본 헤더로 사용되고 C ++는 기본 헤더로 사용됩니다. .
# 37) 예외 / 오류 처리 :
C ++는 try-catch 블록을 사용하여 예외 / 오류 처리를 지원합니다. C는 예외 처리를 직접 지원하지 않지만 몇 가지 해결 방법을 사용하여 오류를 처리 할 수 있습니다.
# 38) 키워드 :
C ++는 C보다 훨씬 많은 키워드를 지원합니다. 실제로 C에는 32 개의 키워드 만있는 반면 C ++에는 52 개의 키워드가 있습니다.
# 39) 템플릿 :
템플릿을 사용하면 데이터 유형에 관계없이 클래스와 객체를 정의 할 수 있습니다. 템플릿을 사용하여 일반 코드를 작성하고 모든 데이터 유형에 대해 호출 할 수 있습니다.
객체 지향적 인 C ++는 클래스와 객체를 사용하므로 템플릿을 지원합니다. 반면 C는 템플릿 개념을 지원하지 않습니다.
표 형식 : C Vs C ++
하지 마라 | 형질 | 씨 | C ++ |
---|---|---|---|
7 | 코딩 용이성 | 모든 것을 코딩 할 수 있습니다. | 고급 객체 지향 개념이 제공됩니다. |
1 | 프로그래밍 유형 | 절차 적 언어 | 객체 지향 프로그래밍 언어. |
두 | 프로그래밍 접근법 | 하향식 접근 방식 | 상향식 접근 방식 |
삼 | 응용 프로그램 개발 | 임베디드 장치, 시스템 레벨 코딩 등에 적합합니다. | 네트워킹, 서버 측 애플리케이션, 게임 등에 적합합니다. |
4 | 파일 확장자 | .씨 | .cpp |
5 | 서로 호환성 | C ++와 호환되지 않습니다. | C ++는 C의 하위 집합이므로 C와 호환됩니다. |
6 | 다른 언어와의 호환성 | 호환되지 않음 | 호환 가능 |
8 | 데이터 보안 | 무시할 수 있음 | 높은 |
9 | 프로그램 구분 | 기능으로 나누어 진 프로그램. | 프로그램은 클래스와 객체로 나뉩니다. |
10 | 표준 I / O 작업 | scanf / printf | cin / 비용 |
열한 | 초점 / 강조 | 기능 및 / 또는 프로세스를 강조합니다. | 기능보다는 데이터를 강조합니다. |
12 | main () 함수 | 다른 함수를 통해 main을 호출 할 수 있습니다. | 어느 지점에서든 main을 호출 할 수 없습니다. |
13 | 변수 | 함수 시작 부분에 선언됩니다. | 프로그램의 어느 곳에서나 선언 할 수 있습니다. |
14 | 전역 변수 | 다중 선언 | 다중 선언이 없습니다. |
열 다섯 | 참조 변수 및 포인터 | 포인터 만 | 양자 모두 |
16 | 열거 형 | 정수 유형 만. | 고유 한 유형 |
17 | 문자열 | char [] 만 지원 | 불변의 문자열 클래스를 지원합니다. |
18 | 인라인 기능 | 지원되지 않음 | 지원 |
19 | 기본 인수 | 지원되지 않음 | 지원 |
이십 | 구조 | 구조 멤버로 기능을 가질 수 없습니다. | 구조 멤버로 기능을 가질 수 있습니다. |
이십 일 | 클래스와 객체 | 지원되지 않음 | 지원 |
22 | 데이터 유형 | 내장 및 기본 데이터 유형 만 지원됩니다. 부울 및 문자열 유형이 없습니다. | 내장 데이터 유형 외에 지원되는 부울 및 문자열 유형. |
2. 3 | 기능 과부하 | 지원되지 않음 | 지원 |
24 | 계승 | 지원되지 않음 | 지원 |
25 | 기능 | 기본 정렬 기능은 지원하지 않습니다. | 기본 배열로 기능을 지원합니다. |
26 | 네임 스페이스 | 지원되지 않음 | 지원 |
27 | 소스 코드 | 자유 형식 | 원래 C와 객체 지향에서 가져 왔습니다. |
28 | 추출 | 존재하지 않음 | 선물 |
29 | 정보 숨기기 | 지원되지 않음 | 지원 |
30 | 캡슐화 | 지원되지 않음 | 지원 |
31 | 다형성 | 지원되지 않음 | 지원 |
32 | 가상 기능 | 지원되지 않음 | 지원 |
33 | GUI 프로그래밍 | Gtk 도구 사용. | Qt 도구 사용. |
3. 4 | 매핑 | 데이터와 함수를 쉽게 매핑 할 수 없습니다. | 데이터와 기능을 쉽게 매핑 할 수 있습니다. |
35 | 메모리 관리 | Malloc (), calloc (), free () 함수. | New () 및 delete () 연산자. |
36 | 기본 헤더 | Stdio.h | iostream 헤더 |
37 | 예외 / 오류 처리 | 직접적인 지원이 없습니다. | 지원 |
38 | 키워드 | 32 개의 키워드를 지원합니다. | 52 개의 키워드를 지원합니다. |
39 | 템플릿 | 지원되지 않음 | 지원 |
C 및 C ++에 대해 자주 묻는 질문
지금까지 C 대 C ++의 주요 차이점을 확인했습니다. 이제 우리는 C, C ++ 및 그 비교와 관련하여 자주 묻는 질문에 답할 것입니다.
Q # 1) 왜 C와 C ++가 여전히 사용됩니까?
대답: C와 C ++는 시장에서 너무 많은 프로그래밍 언어에도 불구하고 여전히 인기가 있습니다. 주된 이유는 C와 C ++가 하드웨어에 가깝기 때문입니다. 둘째, 우리는 이러한 언어로 거의 모든 것을 할 수 있습니다.
C ++의 성능은 다른 언어에 비해 높습니다. 임베디드 시스템 개발의 경우 C가 당연한 선택 인 것 같습니다. 하나의 크기가 모든 것에 맞지는 않지만 C 및 C ++ 만 사용하여 개발할 수있는 일부 응용 프로그램과 프로젝트가 있습니다.
Q # 2) C 나 C ++ 중 어느 것이 더 어려운가요? 또는 어느 것이 더 나은 C 또는 C ++입니까?
대답: 사실, 둘 다 어렵고 둘 다 쉽습니다. C ++는 C를 기반으로하므로 C의 모든 기능을 지원하며 객체 지향 프로그래밍 기능도 있습니다. 학습과 관련하여 크기별 C는 학습 할 개념이 거의없고 C ++는 방대합니다. 따라서 C가 C ++보다 쉽다고 말할 수 있습니다.
프로그래밍에 관해서는 개발중인 애플리케이션에 대해 생각해야합니다. 따라서 프로그래밍 할 응용 프로그램이 주어지면 두 언어의 장단점을 평가하고 응용 프로그램을 개발하기 더 쉬운 것을 결정해야합니다.
결론적으로 어느 것이 더 어렵거나 더 나은지에 대한 명확한 답은 없다고 말할 수 있습니다.
Q # 3) C없이 C ++을 배울 수 있나요? C ++는 배우기 어렵습니까?
대답: 예, 우리는 C를 몰라도 쉽게 C ++를 배울 수 있습니다.
따라서 올바른 사고 방식과 좋은 프로그래밍 지식 만 있으면 C를 건드리지 않고도 C ++로 이동할 수 있습니다. C는 C ++의 하위 집합이므로 C ++를 배우는 과정에서 항상 C 언어를 이해하게됩니다.
Q # 4) C 또는 C ++ 중 어느 것이 더 빠릅니까?
대답: 실제로 이것은 우리가 사용하는 기능에 따라 다릅니다. 예를 들어 C ++ 프로그램에서 가상 기능과 같은 객체 지향 프로그래밍 기능을 사용한 경우 가상 테이블 및 가상 기능에 대한 기타 세부 사항을 유지하는 데 항상 추가 노력이 필요하기 때문에이 프로그램은 느려질 수 있습니다.
그러나 C ++에서 일반 기능을 사용하는 경우이 C ++ 프로그램과 다른 C 프로그램의 속도는 동일합니다. 따라서 개발중인 애플리케이션, 사용중인 기능 등과 같은 요인에 따라 달라집니다.
Q # 5) C ++는 좋은 시작 언어입니까?
대답: 대답은 예와 아니오입니다.
올바른 동기가 있고 투자 할 시간이 있고 배우고 자하는 의지가 있다면 모든 프로그래밍 언어를 배울 수 있기 때문에 그렇습니다. 유일한 전제 조건은 기본적인 컴퓨터 지식과 기본적인 프로그래밍 용어가 있어야한다는 것입니다.
따라서 C ++로 시작할 때 언어의 기본과 루프, 의사 결정 등과 같은 기타 구조를 배우는 한 다른 언어와 마찬가지로 매우 쉽습니다.
이제 우리는 No part로 올 것입니다.
우리는 C ++가 매우 방대하고 많은 기능을 가지고 있다는 것을 알고 있습니다. 따라서 학습을 진행하면서 C ++ 프로그래밍에서 많은 도전에 직면 할 수 있으므로 초보자는 이러한 문제를 처리하지 못할 수 있습니다.
C ++를 모국어로 시작했을 때 메모리 누수가 발생하는 상황을 상상해보세요 !! 따라서 먼저 Python 또는 Ruby와 같은 간단한 언어로 시작하는 것이 좋습니다. 프로그래밍의 요령을 파악한 다음 C ++로 이동하십시오.
결론
이 자습서에서는 다양한 기능 측면에서 C Vs C ++ 언어 간의 주요 차이점을 살펴 보았습니다.
C는 절차 적 언어이고 C ++는 객체 지향 프로그래밍 언어이지만 우리는 많은 기능이 C ++ 전용이라는 것을 보았습니다. C ++는 C에서 파생되므로 C에서 지원하는 많은 기능을 지원합니다.
후속 자습서에서는 C ++와 Java 및 Python과 같은 다른 프로그래밍 언어 간의 차이점에 대해 계속 논의 할 것입니다.
=> 여기에서 전체 C ++ 교육 시리즈를 확인하십시오.