C++ [Basic] namespace

namespace의 필요성

  • 함수의 구조체등의 이름 충돌 해결
#include <stdio.h>

namespace Audio
{
    void init()
    {
        printf("Audio init\n");
    }
}
namespace Video
{
    void init()
    {
        printf("Video init\n");
    }    
}
// global namespace 
void init()
{
    printf("System init\n");
}

int main()
{
    init();
    Audio::init();
    Video::init();
}

namespace 에 있는 요소에 접근하는 3가지 방법

qualified name 사용

Audio::init();
qualified name 사용법을 가장 권장

using declaration (using 선언)을 사용한 접근

using Audio::init();
init 함수는 Audio 이름 없이 사용 가능

using directive (using 지시어)를 사용한 접근

using namespace Audio;
Audio namespace의 모든 요소를 Audio이름 없이 사용가능

  
#include <stdio.h>

namespace Audio
{
    void init()  { printf("Audio init\n"); }
    void reset() { printf("Audio reset\n");}
}
using namespace Audio; // using directive

void init()  { printf("global init\n"); }

int main()
{
    Audio::init();
    
    //using Audio::init; // using declaration
    //init();
    //reset(); // error
    
    //using namespace Audio; // using directive
    ::init(); 
    reset();
}

::init() : global namespace 에 접근하려면 ::를 사용

std namespace

C++ 표준의 모든 요소는 std namespace 안에 있음

namespace rule

Two classes with the same name can be created inside 2 different namespaces in a single program.
Inside a namespace, no two classes can have the same name.

Categories:

Updated: