글수 49
안녕하세요? 고슴도치입니다.
어묵이 자게에 올린 글을 보고 예전에 질답란에 썼던 글이 생각나서 여기에 옮겨적습니다.. 그땐 답글에 달아놔서 검색도 안될거 같아서요^^;
C++은 C언어를 100% 호환합니다. 그 외에 객체지향적 요소가 추가되었으며, C에서는 조금 불편했던 세세한 것들이 수정되었습니다.. 몇가지를 소개하면 다음과 같습니다..
1. 변수의 선언위치가 자유로워졌다.
- C는 변수의 선언위치가 함수의 시작부분으로 고정되어 있었지만, C++은 어느 위치든지 사용하기 전에만 선언해주면 됩니다.
2. 헤더파일의 포함위치가 자유로워졌다.
- 변수선언과 마찬가지로 C는 #include 명령을 파일의 첫부분에만 가능했지만, C++은 중간중간 필요한 위치에 가능합니다.
3. 한줄전용주석이 가능하다.
- C에서는 주석용 키워드가 /* ... */ 밖에 없지만, C++에서는 //라는 한줄만 가능한 주석용 키워드가 추가되었습니다.
4. 함수의 오버로딩이 가능하다.
- C에서는 동일한 이름의 다른 형태로 함수를 선언할 수 없습니다. 하지만 C++에는 오버로딩이라는 개념이 존재해서 가능해졌죠.. 다음과 같은 것입니다.
만약에 덧셈을 하는 함수를 만든다고 합시다. 그런데 덧셈은 정수+정수, 실수+실수, 정수+실수 등 다양한 형태가 존재할 수 있습니다. 이를 C에서 만드려면,
[code] int sum1(int a, int b); float sum2(float a, float b); float sum3(int a, float b); float sum4(float a, int b); [/code]
이렇게 함수명을 각기 다르게 써줘야합니다. 그럼 프로그래밍할때 변수의 타입을 보고 알아서 골라서 써야하죠.. 하지만 C++에서는,
[code] int sum(int a, int b); float sum(float a, float b); float sum(int a, float b); float sum(float a, int b); [/code]
처럼 똑같은 모양으로 써놓고 사용하면, 컴파일러가 알아서 인자에 맞는 함수를 골라서 사용합니다..
이외에도 연산자를 새로 정의해서 사용할 수 있는 연산자 오버로딩을 지원합니다.
5. 동적할당/해제 키워드인 new와 delete가 추가되었다.
- C에서는 동적할당/해제를 위해서는 malloc(), free() 등 함수를 사용해야했지만 C++에서는 키워드 차원에서 지원합니다.
6. 구조체 복사가 가능하다.
- C에서는 구조체 복사가 불가능했습니다. a와 b가 구조체 변수라면 a = b;같은게 안된거죠.. 하지만 C++에서는 가능합니다.
7. struct, union의 기능이 대폭 강화되었다.
- C에서는 객체지향적 개념이 없었기 때문에 stuct와 union의 차이가 분명히 드러났죠.. 하지만 C++에서 등장한 class가 struct와 union의 기능을 모두 수용하기 때문에 솔직히 이 둘은 쓸모가 없어졌습니다.. 하지만 호환성 측면에서 이들을 남겨두었고, 오히려 struct와 union의 기능을 class와 거의 같게 만들어놨죠.. 기존에 불가능했던 멤버함수, 생성자, 소멸자, 멤버변수의 초기화 등이 가능해졌습니다..
이외에도 수많은 것들이 바뀌었습니다..
어묵이 자게에 올린 글을 보고 예전에 질답란에 썼던 글이 생각나서 여기에 옮겨적습니다.. 그땐 답글에 달아놔서 검색도 안될거 같아서요^^;
C++은 C언어를 100% 호환합니다. 그 외에 객체지향적 요소가 추가되었으며, C에서는 조금 불편했던 세세한 것들이 수정되었습니다.. 몇가지를 소개하면 다음과 같습니다..
1. 변수의 선언위치가 자유로워졌다.
- C는 변수의 선언위치가 함수의 시작부분으로 고정되어 있었지만, C++은 어느 위치든지 사용하기 전에만 선언해주면 됩니다.
2. 헤더파일의 포함위치가 자유로워졌다.
- 변수선언과 마찬가지로 C는 #include 명령을 파일의 첫부분에만 가능했지만, C++은 중간중간 필요한 위치에 가능합니다.
3. 한줄전용주석이 가능하다.
- C에서는 주석용 키워드가 /* ... */ 밖에 없지만, C++에서는 //라는 한줄만 가능한 주석용 키워드가 추가되었습니다.
4. 함수의 오버로딩이 가능하다.
- C에서는 동일한 이름의 다른 형태로 함수를 선언할 수 없습니다. 하지만 C++에는 오버로딩이라는 개념이 존재해서 가능해졌죠.. 다음과 같은 것입니다.
만약에 덧셈을 하는 함수를 만든다고 합시다. 그런데 덧셈은 정수+정수, 실수+실수, 정수+실수 등 다양한 형태가 존재할 수 있습니다. 이를 C에서 만드려면,
[code] int sum1(int a, int b); float sum2(float a, float b); float sum3(int a, float b); float sum4(float a, int b); [/code]
이렇게 함수명을 각기 다르게 써줘야합니다. 그럼 프로그래밍할때 변수의 타입을 보고 알아서 골라서 써야하죠.. 하지만 C++에서는,
[code] int sum(int a, int b); float sum(float a, float b); float sum(int a, float b); float sum(float a, int b); [/code]
처럼 똑같은 모양으로 써놓고 사용하면, 컴파일러가 알아서 인자에 맞는 함수를 골라서 사용합니다..
이외에도 연산자를 새로 정의해서 사용할 수 있는 연산자 오버로딩을 지원합니다.
5. 동적할당/해제 키워드인 new와 delete가 추가되었다.
- C에서는 동적할당/해제를 위해서는 malloc(), free() 등 함수를 사용해야했지만 C++에서는 키워드 차원에서 지원합니다.
6. 구조체 복사가 가능하다.
- C에서는 구조체 복사가 불가능했습니다. a와 b가 구조체 변수라면 a = b;같은게 안된거죠.. 하지만 C++에서는 가능합니다.
7. struct, union의 기능이 대폭 강화되었다.
- C에서는 객체지향적 개념이 없었기 때문에 stuct와 union의 차이가 분명히 드러났죠.. 하지만 C++에서 등장한 class가 struct와 union의 기능을 모두 수용하기 때문에 솔직히 이 둘은 쓸모가 없어졌습니다.. 하지만 호환성 측면에서 이들을 남겨두었고, 오히려 struct와 union의 기능을 class와 거의 같게 만들어놨죠.. 기존에 불가능했던 멤버함수, 생성자, 소멸자, 멤버변수의 초기화 등이 가능해졌습니다..
이외에도 수많은 것들이 바뀌었습니다..
- 고슴도치

뭐..대략 알고는 있었지만..
유연하게 쓸려고 몇몇가지 알아볼참이었거든..
여튼 고마워~