이름공간(namespace)

이름공간(namespace)

특정 영역에 이름을 붙여주기 위한 문법적 요소이다. :: (범위지정연산자)를 이용해 접근합니다.

#include <iostream>

namespace space {
  int num = 1;
  void func() {
    std::cout << "space의 num : " << num << std::endl;
  }
}

namespace otherSpace {
  int num = 2;
  void func() {
    std::cout << "otherSpace의 num : " << num << std::endl;
  }
}

int main(void)
{
  space::func();
  otherSpace::func();
  return 0;
}

이름공간 함수의 선언부와 정의를 구분하기

#include <iostream>

namespace space {
  int num = 1;
  void func();
}

namespace otherSpace {
  int num = 2;
  void func();
}

int main(void)
{
  space::func();
  otherSpace::func();
  return 0;
}

void space::func() {
  std::cout << "space의 num : " << num << std::endl;
}

void otherSpace::func() {
  std::cout << "otherSpace의 num : " << num << std::endl;
}

이름공간의 중첩

#include <iostream>

namespace space {
  void func();
  
  namespace otherSpace {
    void func();
  }
}

int main(void)
{
  space::func();
  space::otherSpace::func();
  return 0;
}

void space::func() {
  std::cout << "space의 func 호출" << std::endl;
}

void space::otherSpace::func() {
  std::cout << "space::otherSpace의 func호출" << std::endl;
}

using 명령을 사용하여 이름공간 명시

std는 C++ 표준라이브러리의 이름공간입니다. 지금까지 std::cout, std::cin, std:endl 처럼 객체에 접근할때 ::를 써서 접근하였는데 std처럼 자주 쓰이는 것은 using 명령을 통행 기본 이름공간으로 지정할수 있습니다.

#include <iostream>
using namespace std; // std 이름공간을 기본 이름공간으로 지정

int main(void)
{
  char name[100];
  cout << "이름을 입력하세요 : ";
  cin >> name;
  cout << name << "님 안녕하세요." << endl;
  return 0;
}

::(범위지정연산자)의 또다른 기능

범위지정 연산자를 이용하여 전역변수에 접근할 수 있습니다.

#include <iostream>
using namespace std;

int val = 100; // 전역변수

int main(void)
{
  int val = 20;
  cout << val << endl; // 지역변수 출력
  cout << ::val << endl; // 전역변수 출력
  return 0;
}

Last updated