|
http://thinkpro.tistory.com/22
네임스페이스가 뭔지 알기 전에 아주 간단한 Hello World 예제를 살펴봅시다.
C++에서 Hello World 를 찍어내려면
1 2 3 4 5 6 7 8 |
#include <iostream> using namespace std; int main( void ) { cout << "Hello World! C++" << endl; return 0; } |
와 같이 입력하면 됩니다.
C를 미리 공부하셨다면, C에서의 HelloWorld 예제랑 차이점을 몇가지 찾아낼 수 있을 것이고 이런 질문을 하겠죠..
※ 일단, 헤더파일부터 다르네요. => 그거야 사용하는 함수가 다르니까 헤더파일이 다른 것이겠죠?
C 언어에서는 printf 함수를 사용했다면, C++ 에서는 cout이라는 함수를 사용합니다.
cout 함수를 사용하기 위해 "iostream"(input/output stream 이라는 뜻입니다.) 헤더파일을 인용한 것입니다.
p.s
cout은 c out (씨-아웃)입니다. 촌스럽게 카우트 라고 발음하면 곤란하겠죠? (절대 제 경험은
아닙니다.)
※ 엥? 그렇다면 using namespace std; 는 뭐죠? 처음 보는 건데?
=> 이 질문을 받기 위해서 제가 Hello World 예제를 먼저 해보자고 한 겁니다.
using namespace std; 이거 그냥 그대로 읽어봅시다. "std라는 네임스페이스를 사용하며..."라고 해석됩니까?
그렇습니다. 이 문장은 우리가 std라는 네임스페이스를 사용할 수 있게 해줍니다.
여기서 std는 많이 본 약자죠? 그렇습니다. standard의 약자입니다.
즉,
using namespace std; // 이 문장은 표준 네임스페이스를 사용하겠다는 의미입니다.
자 이제, 네임스페이스가 뭔지 알아보죠.
using namespace 선언은 말 그대로 소속을 알리는 역할을 합니다. 그러니까 네임스페이스는 변수 이름이나 함수 이름과 같이 명칭을 사용하는 공간으로 소속을 나타낸다고 표현할 수 있습니다. 예를 들어, 영희네 강아지도 멍멍이이고, 철수네 강아지도 멍멍이에요. 둘이 어떻게 구분하죠? 둘 다 멍멍이면 구별 안되죠? 우리는 구별하기 위해서 영희네 멍멍이, 철수네 멍멍이라고 언급할 수 있습니다. 여기서 영희, 철수라고 하는 '소속'을 네임스페이스라고 생각하면 됩니다.
네임스페이스는? 소속!
namespace는 다음과 같은 형태로 사용되어집니다.
1 2 3 4 |
namespace 이름 { 선언내용; } |
자, 이제 바로 네임스페이스 예제를 들여다 봅시다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#include <iostream> namespace A_RANGE { int score = 100; int FUNC( int s) { return s/5; } } namespace B_RANGE { int score = 200; int FUNC( int s) { return s/10; } } using namespace std; using namespace A_RANGE; using namespace B_RANGE; int main() { int score = 300; cout << "main score : " << score << endl; cout << "standard score : " << std::score << endl; cout << "A_RANGE score : " << A_RANGE::score << endl; cout << "B_RANGE score : " << B_RANGE::score << endl; return 0; } |
예제의 결과값은 300 300 100 200 입니다.
예제를 자세히 보시면 또 알 수 있다시피 네임스페이스의 변수 및 함수의 사용은
[namespace]::[변수 혹은 함수]
의 꼴로 사용됩니다.
FUNC를 메인 함수에서 사용하지 않았는데, 이 부분은 여러분이 유연하게 예제를 고쳐가면서 직접 사용해보세요.
함수를 사용하는 것은 변수 사용하는 것과 동일합니다.
이 예제를 통해서 얻어가야 할 것은 네임스페이스라는 소속 공간에 따라서 변수나 함수가 같은 이름임에도
다른 식으로 구분이 될 수 있다는 것을 아셔야 합니다.
그리고 네임스페이스 안에도 함수가 들어가죠. 마치, 하나의 객체 같지 않나요?
C++ 도 객체지향언어(OOP)입니다. 즉, 네임스페이스가 C++에서의 하나의 객체 단위가 된다고 생각할 수도 있곘습니다! :)
여기까지, 네임스페이스에 대한 간단한 정의 및 설명이었습니다.
감사합니다.
'차근차근 > C' 카테고리의 다른 글
c++ 기본 문법 정리 (0) | 2014.07.29 |
---|---|
Edit Plus+MinGW+gcc 컴파일 설정 (0) | 2014.07.29 |
.h .hpp 차이 (0) | 2014.07.29 |
Python 소스코드를 Visual C++ 로 빌드하는 방법 (0) | 2014.07.29 |
C++ 프로그래밍 파일 입출력(ofstream/ifstream) (0) | 2014.07.29 |