'차이'에 해당되는 글 1건

  1. 2008.12.06 C언어와 C++언어의 차이점
Programming/C++2008. 12. 6. 22:07

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 타입을 반환하고 매개 변수는 알수 없다는 형태인 빈 괄호 형식으로 선언된다.

Posted by skensita