1. using namespace?
#include <bits/stdc++.h>
using namespace std;
string a;
int main(){
cin >> a;
cout << a << "\n";
return 0;
}
Code language: PHP (php)
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;
}
Code language: PHP (php)
이때 이들을 구분하기 위해서 출신과 성분(?)을 밝히는 것이다.
#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;
}
Code language: PHP (php)
물론 사용할 때마다 매번 밝힐 수는 없으니 전역으로 혹은 지역으로 “여기서부터는 따로 말하지 않아도 어디 어디서 온 누구로 알아먹어라”라고 지정하는데 using namespace가 그 뜻이다.
using namespace BO;
A();
Code language: PHP (php)
물론 전체 namespace가 아닌 특정한 부분만 사용할 수 있다.
namespace BO {
void A() {
cout << "난 BOA에요" << endl;
}
void NOBONO() {
cout << "난 보노보노에요" << endl;
}
}
int main(void){
using BO::A();
A(); // 성공!
NOBONO(); // 실패!
return 0;
}
Code language: JavaScript (javascript)
주의할 점
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;
}
Code language: PHP (php)
namespace에 대한 다양한 예제는 찾아보면 많다.
(절대 따로 정리하기 귀찮아서가 아니다. 진짜 아니다.)
참고 : https://blockdmask.tistory.com/474