먼저 첫번째로 주석이 달라졌습니다.
지금이야 /* */ 주석이나 // 주석 사용은 다 되는 것인데
c언어에서는 /* */ 주석만 있고 // 주석은 없었습니다.
근데 c++ 에서 // 이 주석이 생겼다고 합니다.
참고로
/* */ => block 주석
// => line 주석
입니다.
두번째로는 상수값 표현에 대한 것인데 이 부분은 달라졌다기 보다는
쓰는 방향이 조금 달라 졌습니다..
c언어에서는 #define MAX 10 을 주로 사용을 하였지만
c++ 에서는 const int MAX = 10; 을 주로 사용 한다고 합니다.
그리고 세번째로는 영역 결정 연산자(::) 즉 scope 연산자가 있는데,
이 scope 연산자는 두가지 의미로 쓸수 있습니다.
a::b 라는 뜻에 scope는 a에 속해 있는 b라는 뜻이며,
변수에 ::c 이렇게 쓰는 경우는 전역의 의미를 가집니다.
예를 들어..
#include<iostream>
using namespace std;
int val = 100;
int main()
{
int val = 10;
cout << val << ::val << endl;
return 0;
}
이렇게 적어서 출력을 시킨다면 10 100 이 나옵니다..
즉 그냥 val를 적었을 경우는 지역변수를 먼저 생각하기에 10이 출력이 되지만..
앞에 :: 쓸경우 전역의 의미로 100이 출력 됩니다.
네번째에는 새로 생긴 자료형 논리값 bool 형입니다.
다섯번째로는 함수 오버로딩 입니다.
C언어에서는 매개변수가 다르더라도 같은 함수명이면 쓸수가 없었지만
하지만 C++에서는 매개변수가 다르면 같은 함수명을 사용할 수 있게 되었습니다.
즉,
void function(void);
void function(int);
void function(char, int);
이렇게 사용이 가능 합니다.
하지만
void function(void);
int function(void);
이렇게는 사용이 안됩니다.
여섯번째로는 함수에 Default 값을 선언을 해 줄수 있습니다.
즉, void function(int a, int b = 0);
이런식으로 선언을 해 놓으면 사용할때
function(10, 20)
function(10) => 이렇게 사용을 하면 a에는 10이 들어 가고 b에는 0이 들어 가게 됩니다.
그리고 inline 함수가 있는데 이것도 #define을 대신해서 사용을 하는 겁니다.
즉, #define SUM(a,b) a+b
이런식으로 사용하는 것을
inline int SUM(int a, int b)
{
return a+b;
}
이렇게 사용을 합니다.
사용하는 이유는 #define을 사용하면 디버깅도 어렵고 프로그램 크기도 커지기 때문에
그 #define을 c++에서는 inline 함수로 사용을 합니다.
그리고 포인터 쓰기 힘드신분들을 위해 나온듯한 레퍼런스(&) 가 새로 생겼습니다.
이 레퍼런스는 포인터 처럼 주소를 가르키는 것이 아니라
그 원래 있는 변수의 별명을 지어주는 것이라 생각하면 됩니다.
그러니깐
int val = 10;
이 있는데 이를
int &name = val;
로 name 으로도 사용할수 있고 val로도 사용할 수 있습니다.
만약 val의 주소가 50000이라면.. name의 주소도 50000입니다.
즉 같다라는 뜻입니다.
쉽게 똑같은 거라 생각 하시면 될 것 같습니다.
마지막으로 초기화 해 주는 것 인데
int a = 10;
int b(10);
이렇게 둘다 초기화가 가능 합니다.
'C++ Language > Tip / Information' 카테고리의 다른 글
const_cast 키워드 (0) | 2010.02.12 |
---|---|
mutable 키워드 (0) | 2010.02.12 |
상수함수란?! (0) | 2010.02.12 |
explicit 키워드 (0) | 2010.02.10 |
C++ 코딩 스타일(제가 사용하는 코딩 스타일입니다.) (0) | 2009.04.29 |