1. C언어와 C++언어의 대표적인 차이
- C++은 기존의 C언어 구성요소를 대부분을 사용하며 거기에 진보된 자료형(Data Type)과 객체지향 프로그래밍 개념을 추가
- C++은 C를 기반으로 만들어졌지만 C와 구별되는 독립적인 언어이고, 많은 면에서 C보다 좋은 언어
- C++은 객체지향 언어(Object Oriented Programming)
프로시쥬어프로그래밍->구조화된 프로그래밍->객체지향프로그래밍
: 코드와 데이터를 하나로 묶고(코드/데이터 추상화), 이들 서로가 독립성을 지니도록 하는 경향 (모듈화)
- 소프트웨어 산업의 위기 -> 객체지향언어로 극복
항목 |
설명 |
코멘트 스타일에 // 추가 |
C 언어에서는 // 스트일의 코멘트는 지원하지 않는다. |
문자 상수(Character Literal)의 타입 |
‘a’와 같은 문자 상수를 C언어에서는 int 타입으로 취급하나 C++언어에서는 char 타입으로 취급한다. 즉 sizeof(‘a) == sizeof(int)가 C언어에서는 true이지만, C++ 언어에서는 그렇지 않다. |
문자열 상수의 한정어 |
C 언어에서 “abc”와 같은 문자열 상수는 char *로 취급되었다. 하지만 C++언어에서는 const char *로 취급한다. 따라서 char *p = exp?”abc” : “de”; 는 C 언어에서는 올바른 구문이지만 C++언어에서는 잘못된 문장이다. |
임시 선언(Tentative Declaration) |
파일 범위(File Scope) 안에서 int i; int i; 와 같이 i를 두번 선언하는 것은 C언어에서는 허락하지만 C++언어에서는 허락하지 않는다. |
struct |
C++언어에서 struct는 클래스의 타입으로 취급된다. |
파일 범위에서 선언된 명칭 |
별도의 선언이 없다면 C++언어에서는 내부 연결자(Internal Linkage)를 갖는 것으로 취급되지만 C언어에서는 외부 연결자(External Linkage)를 갖는 것으로 취급된다. |
main 함수의 재귀적 호출 |
C언어에서는 허락되지만 C++언어에서는 허락되지 않는다. |
호환되는 타입(Compatible Type) |
C언어에서는 허락되지만 C++언어에서는 그렇지 않다. 예를 들어 완전히 동일한 레이아웃을 갖는 struct의 경우 C언어에서는 서로 호환되지만 C++언어에서는 서로 다른 타입일 뿐이다. |
void *에서 일반 포인터로의 변환 |
C언어에서는 암시적인 변환(Implicit Con version)이 가능하지만 C++언어에서는 반드시 명시적으로 변환해야 한다. |
암시적 선언(Implicit Declaration) |
C언어에서는 함수를 선언하지 않고 사용할 수 있지만, C++언어에서는 그렇지 않다. 참고로, C언어에서 함수를 선언하지 않고 사용하면 함수는 void 타입을 반환하고 매개 변수는 알수 없다는 형태인 빈 괄호 형식으로 선언된다. |