[C++] using


namespace를 이용해서 이름이 동일한 함수들과 변수를 구분할 수 있다고 했다.

#include <iostream>

namespace A { void printThis(){std::cout<<"HelloA"<<std::endl;} }

int main() {
  A::printThis();
}

만약 이 namespace A의 printThis 함수가 여러번 사용된다면 매번 A::printThis();라고 입력해주어야 하는데, 굉장히 번거로운 일이다.

이를 방지하기 위해 using을 사용할 수 있다.

#include <iostream>

namespace A { void printThis(){std::cout<<"HelloA"<<std::endl;} }

int main() {
  using A::printThis;
  
  printThis();
}

위에서는 main 함수 내에서 지역변수처럼 using을 선언해준 것이다. 이 using은 main이 끝나면 더 이상 사용할 수 없다.

전역변수처럼 함수 밖에서 using을 선언해준다면 모든 곳에서 사용할 수 있다.

#include <iostream>

namespace A { void printThis(){std::cout<<"HelloA"<<std::endl;} }
namespace B { void printThis(){std::cout<<"HelloB"<<std::endl;} }

int main() {
  A::printThis();
  B::printThis();
}

하지만 위와 같이 동일한 이름으로 함수를 선언했는데 using을 써버린다면 namespace를 쓴 의미가 없어지기 때문에 using도 적재적소에 맞게 사용해야 한다.