본문 바로가기
IT 이야기/C++

C++ 이름공간 namespace 알아보기

by youngmap 2021. 9. 1.
반응형

동일한 이름의 함수나 변수를 만드는 경우 이름의 충돌문제가 발생할 수 있습니다.

그래서 C++에는 이름공간(namespace) 문법을 정의하여 이름 충돌 문제를 해결합니다.

 

특정 영역에 이름을 붙인다고 생각하면 됩니다.

아래 간단한 예제를 만들었습니다.

 

이름 공간 aaa, bbb, ccc 안에 print() 라는 동일한 함수가 있습니다.

그리고 이름 공간 ccc 안에는 ddd 라는 중첩된 이름공간이 있고 여기에도 마찬가지로 print() 라는 함수가 있습니다.

이 함수들을 모두 호출해보겠습니다.

#include <iostream>

namespace aaa{
    void print(){
        std::cout << "aaa" << std::endl;
    }
}

namespace bbb{
    void print(){
        std::cout << "bbb" << std::endl;
    }
}

namespace ccc{

    void print(){
        std::cout << "ccc" << std::endl;
    }
    namespace ddd{
        void print(){
            std::cout << "ddd" << std::endl;
        }
    }
}

int main()
{
    aaa::print();
    bbb::print();
    ccc::print();
    ccc::ddd::print();
    return 0;
}

main함수가 실행되면, 각각 이름공간에 선언된 print() 함수를 호출하므로 아래와 같은 결과가 나옵니다.

"::"은 범위지정 연산자 입니다.

이름공간을 지정할 때 사용하는 연산자 입니다.

 

출력에 사용되는 cout 도 사실은 std 라는 이름공간에 선언되어 있기 때문에 std::cout 이렇게 호출합니다.

이름공간을 생략하려면 using 선언을 하시면 됩니다.

using std::cin;
using std::endl;

std:: 를 전부 생략하시려면 using namespace 선언을 하시면 됩니다.

using namespace std;

 

이름공간에 대해 알아보았습니다.

반응형