namespace


  namespace

c++에 최근에 도입된 문법으로
MFC등 무지막지한 라이브러리가 지원 되는 현실에서
필요 불가결 하개 등장한 예약어이다.

수많은 함수,클래스 등이 존재할 수 있으며, 이들 이름들 간의 충돌을 회피하기 위해서는
기억하기 힘들 정도로 함수이름들이 복잡해져야만 하는데,
이 문제점을 해결하는 방법으로 namespace를 사용한다.

namespace의 역할은 어떤 모듈이나 타입 등을 하나의 그룹으로 묶어주는 역할을 한다.

사용법 예_1]
string란 클래스를 새로 하나 만든다고 할 때,
기존의 이름과 같다면 당연히 이름을 변형 해서,
ahn_string 머 이런식으로 써주어야 합니다.
하지만 같은 이름으로 내가 만든 string클래스를 쓰는 방법이 있습니다.

아래와 같이
namespace ahn
{
class string{ .... }
}
이렇개 정의 해주시고

void main()
{
using namespace ahn;
string iamstring = "baobo 만쉐이";
...
}

이렇게 사용하면, namespace ahn {} 에서 정의한 string 클래스가 적용된다.

1) 풀패스로 사용한다면 다음과 같은 형식이다. (c++의 완전 이름)
void main()
{
ahn::string iamstring = "baobo 만쉐이";
std::string iamstdstring = "baobo std 만쉐이";
}

2) using directive를 사용하여 하나의 customer 이름을 지정한다면 형식은 다음과 같다.
void main()
{
using ahn::string;
string iamstring = "baobo 만쉐이";
}

ahn이란 곳에서 string클래스 하나만 사용한다는 식이 된다.

참고로, 이름공간중에 std라는 c++에서 미리 정의하고 사용하는 공간이 있는데
왠만한 표준이 들어가는 클래스나 함수는 다 이 namespace에 있다.

사용법 예_2]

사용할 때는 ...
fully qualified name으로 사용을 하거나
using directive를 사용하여 하나의 customer 이름을 지정할 수 있는 것이죠...

아래는 그 예입니다..

#include <iostream>
using namespace std;

namespace TestName1 {
    int a = 5;
}

namespace TestName2 {
    int a = 6;
}

int main( void )
{
    cout << TestName1::a << endl;
    cout << TestName2::a << endl;
    return 0;
}
{_r} 메모장으로 돌아가기