[C++] using namespace
2023. 2. 10. 01:25ㆍAlgorithm/with C++
1. using namespace?
#include <bits/stdc++.h>
using namespace std;
string a;
int main(){
cin >> a;
cout << a << "\n";
return 0;
}
using namespace std;
:std
라는 namespace를 전역으로 선언한다.std
는cin
과cout
을 사용하기 위해서 필요하다.cin >> a;
:a
에 주어진 값을 대입한다.cout << a << "\n";
:a
에 값을 출력한다.
가. namespace란
우리가 프로그래밍을 하다 보면 다양한 라이브러리를 사용하게 된다.
이때 서로 다른 라이브러리의 서로 같은 이름의 함수, 변수 … 등을 사용하게 되는 경우가 있다.
#include <iostream>
using namespace std;
void A() {
cout << "나 A에유" << endl;
}
void A() {
cout << "내도 A라고!" << endl;
}
int main(void)
{
A(); // ??????? 어느 A ???
return 0;
}
이때 이들을 구분하기 위해서 출신과 성분(?)을 밝히는 것이다.
#include <iostream>
using namespace std;
namespace BO {
void A() {
cout << "난 BOA에요" << endl;
}
}
namespace NO {
void A() {
cout << "난 NOA에요" << endl;
}
}
int main(void)
{
// 이젠 구별이 가능하다!
BO::A();
NO::A();
return 0;
}
물론 사용할 때마다 매번 밝힐 수는 없으니 전역으로 혹은 지역으로 “여기서부터는 따로 말하지 않아도 어디 어디서 온 누구로 알아먹어라”라고 지정하는데 using namespace
가 그 뜻이다.
using namespace BO;
A();
물론 전체 namespace가 아닌 특정한 부분만 사용할 수 있다.
namespace BO {
void A() {
cout << "난 BOA에요" << endl;
}
void NOBONO() {
cout << "난 보노보노에요" << endl;
}
}
int main(void){
using BO::A();
A(); // 성공!
NOBONO(); // 실패!
return 0;
}
주의할 점
using namespace
도 선언되는 시점과 범위를 고려해야 한다는 것이다.- 변수처럼 전역이냐 지역이냐에 따라서 유효 범위가 다르다.
#include <iostream>
using namespace std;
namespace BO {
void A() {
cout << "난 BOA에요" << endl;
}
}
namespace NO {
void A() {
cout << "난 NOA에요" << endl;
}
}
void Local(){
using namespace BO; // 지역
A(); // 가능!
}
int main(void)
{
Local(); // SUCESS !!
A(); // ERROR!!!
return 0;
}
namespace에 대한 다양한 예제는 찾아보면 많다.
(절대 따로 정리하기 귀찮아서가 아니다. 진짜 아니다.)
참고 : https://blockdmask.tistory.com/474
'Algorithm > with C++' 카테고리의 다른 글
[C++] 메모리 할당 (0) | 2023.07.07 |
---|---|
[C++] 배열과 포인터 (0) | 2023.07.01 |
[C++] pair와 tuple (0) | 2023.07.01 |
[C++] string (0) | 2023.03.20 |
[C++] 입력과 출력 (0) | 2023.02.10 |