KoreanFoodie's Study

C++ 기초 개념 1 : 이름공간(namespace) 본문

Tutorials/C++ : Beginner

C++ 기초 개념 1 : 이름공간(namespace)

GoldGiver 2021. 12. 20. 12:58


이름 공간 (namespace)

namespace는 정의된 객체가 어디 소속인지를 지정해준다.

#include "header1.h"
#include "header2.h"

int main() {
    header1::foo();
    header2::foo();
}

위의 예시처럼, header1과 header2에 같은 이름의 함수 foo( )가 정의되어 있더라도 namespace를 사용하면 구분해서 사용할 수 있다.

 

또한, "using namespace std;"와 같은 방식은 추천하지 않는다. std에는 수많은 함수들이 포함되어 있기 때문에, 충돌이 일어날 수 있기 때문이다.

 

 

이름 없는 이름 공간

이름 없는 이름 공간을 설정할 경우, 정의된 것들은 해당 파일 안에서만 접근할 수 있게 된다. 이 경우 마치 static 키워드를 사용한 것과 같은 효과를 낸다.

#include <iostream>

namespace {
// 이 함수는 이 파일 안에서만 사용할 수 있다.
// 이는 마치 static int OnlyInThisFile() 과 동일하다.
int OnlyInThisFile() {}

// 이 변수 역시 static int x 와 동일합니다.
int only_in_this_file = 0;
} // namespace

int main() {
    OnlyInThisFile();
    only_in_this_file = 3;
}

추후 헤더 파일을 통해 위 파일을 받았다 하더라도, 저 익명의 namespace안에 정의된 모든 것들은 사용할 수 없게 된다.

Comments