본문 바로가기

C++ Language/Tip / Information

C++언어가 C언어와 달라진 점

먼저 첫번째로 주석이 달라졌습니다.

지금이야 /*   */ 주석이나 // 주석 사용은 다 되는 것인데

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