[열혈 C++ 프로그래밍] 서적을 보면서 공부 중 입니다.

블로그를 우연하게 방문하셔서 보게 되신 분들은 블로그에 올라오는 글을 보고 참고 하셔도 됩니다만,

습득 속도가 빠르신 분들은 서적을 '꼭' 사셔서 습득하시는걸 권장드립니다.


'공지사항' 카테고리의 다른 글

해당 글에 대한 궁금한 점은....  (0) 2016.04.14
기술면접에 올리는 글 들은...  (0) 2016.04.07
cocos2d-x 관련 글들은....  (2) 2016.03.08

[시작하세요! Cocos2d-x 3.0 프로그래밍] 서적을 보면서 공부 중입니다.

책 내용과 거의 다르지는 않으나, deprecated 된 부분은 수정하면서 진행하기에 다소 다른 부분이 있기도 합니다. 참고하시길 바랍니다.

'공지사항' 카테고리의 다른 글

해당 글에 대한 궁금한 점은....  (0) 2016.04.14
기술면접에 올리는 글 들은...  (0) 2016.04.07
C/C++ 관련 글들은..  (0) 2016.03.08

namespace. 글쓴이나, C++을 공부하는 사람들이나 상당히 생소한 개념이다.

근데 사용법이나, 개념은 어렵지 않다.


네임스페이스(namespace)를 풀어서 말하면 '이름을 붙여놓은 공간' 이라고 할 수 있다.


- namespace의 기본원리 -


한 아파트에 철수라는 이름의 사람이 두 명이 산다면, 상황에 따라서 문제가 될 수 있다.

그냥 '철수야' 라고 부르면, 어떤 철수를 부르는지 알 수 가 없다. 아파트가 다르면 문제될 것이 없지만

이와 같은 상황이라면 다를 것이다. 그러면 어떻게 해야할까?

아파트에는 '호실'이라는 단위로 집이 있다. 101호, 102호 이렇게 말이다.

101호와 102호에 각각 철수가 살고 있다면, 다음과 같이 부르면 각 철수를 구분할 수 있다.


'102호에 사는 철수야'


이것이 namespace의 기본원리이다.

아래 코드를 보며 네임스페이스(namespace)의 사용법과 동작을 보자.


- namespace1.cpp -



#include <iostream>


using namespace std;


namespace BestComImpl

{

void SimpleFunc(void)

{

cout << "BestCom이 정의한 함수" << endl;

}

}


namespace ProgComImpl

{

void SimpleFunc(void)

{

cout << "ProgCom이 정의한 함수" << endl;

}

}


int main(void)

{

BestComImpl::SimpleFunc();

ProgComImpl::SimpleFunc();


return 0;

}


실행화면





위에 사용된 연산자 :: 가리켜 범위지정 연산자 라 하며, 그 이름이 의미하듯이 이름공간을 지정할 떄 사용하는 지정할 때 사용하는 연산자이다.


일반적으로 함수는 선언과 정의를 분리하는 것이 일반적이다. 아래 코드를 통해 

네임스페이스(namespace) 기반에서 함수의 선언과 정의를 구분하는 법을 보도록 하자.


- namespace2.cpp -


#include <iostream>


using namespace std;


namespace BestComImpl

{

void SimpleFunc(void);

}


namespace ProgComImpl

{

void SimpleFunc(void);

}


int main(void)

{

BestComImpl::SimpleFunc();

ProgComImpl::SimpleFunc();


return 0;

}


void BestComImpl::SimpleFunc(void)

{

cout << "BestCom이 정의한 함수" << endl;

}


void ProgComImpl::SimpleFunc(void)

{

cout << "ProgCom이 정의한 함수" << endl;

}


실행화면




네임스페이스(namespace)의 또 다른 예시 코드를 소개하며 이번 글을 마치겠다. 네임스페이스(namespace)에 관한 내용은 추가적으로 다시 이어 나가도록 하겠다.


- namespace3.cpp -


#include <iostream>


using namespace std;


namespace BestComImpl

{

void SimpleFunc(void);

}


namespace BestComImpl

{

void PrettyFunc(void);

}


namespace ProgComImpl

{

void SimpleFunc(void);

}


int main(void)

{

BestComImpl::SimpleFunc();


return 0;

}


void BestComImpl::SimpleFunc(void)

{

cout << "BestCom이 정의한 함수" << endl;

PrettyFunc();

ProgComImpl::SimpleFunc();

}


void BestComImpl::PrettyFunc(void)

{

cout << "So Pretty!!" << endl;

}


void ProgComImpl::SimpleFunc(void)

{

cout << "ProgCom이 정의한 함수" << endl;

}


실행결과




'[C], [ C++]' 카테고리의 다른 글

[흑역사] - 너구리 게임  (0) 2016.03.30
인라인(Inline) 함수  (0) 2016.02.21
매개변수의 디폴트 값  (0) 2016.02.21
STL - list 사용 예시 예제  (0) 2016.02.19
함수 오버로딩  (0) 2016.02.18

+ Recent posts