#include <iostream>
int main() {
std::cout << "Hello, World!!" << std::endl;
return 0;
}
:: 은 '(네임스페이스의 이름) :: (함수이름)' 이라는 뜻이다.
쉽게 설명하면 서울 사는 철수와 부산 사는 철수는 다른 사람이다.
그래서 같은 철수를 부르지 않도록 미리 어디사는 철수 인지를 적어주는것이다.
// header1.h 의 내용
namespace header1 {
int foo();
void bar();
}
// header2.h 의 내용
namespace header2 {
int foo();
void bar();
}
위와 같이 작성하고 헤더파일로 저장하면 다른 곳에서도 namespace를 사용할 수 있다.
#include "header1.h"
namespace header1 {
int func() {
foo(); // 알아서 header1::foo() 가 실행된다.
}
} // namespace header1
#include "header1.h"
#include "header2.h"
int func() {
header1::foo(); // header1 이란 이름 공간에 있는 foo 를 호출
}
#include "header1.h"
#include "header2.h"
namespace header1 {
int func() {
foo(); // 알아서 header1::foo() 가 실행된다.
header2::foo(); // header2::foo() 가 실행된다.
}
} // namespace header1
이렇게 사용하다보면 코드가 길어지니까 귀찮아진다. 그래서 using이라는 키워드를 써준다.
#include "header1.h"
#include "header2.h"
using namespace header1;
int main() {
foo(); // header1 에 있는 함수를 호출
bar(); // header1 에 있는 함수를 호출
}
다른 네임스페이스안에서도 명시적으로 선언만해주면 사용이 가능하다.
#include "header1.h"
#include "header2.h"
using namespace header1;
int main() {
header2::foo(); // header2 에 있는 함수를 호출
foo(); // header1 에 있는 함수를 호출
}
그래서 위 예제에서도 쓰기가 귀찮으면 아래와 같이 바꿀 수 있다.
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!!" << endl;
return 0;
}
하지만 using 키워드를 적어놓고 그 안에 또 같은 이름을 가진 철수(함수)가 있으면 곤란해지므로 명시적인 것을 권장한다.
'개발공부 > C++' 카테고리의 다른 글
포인터 복습 (0) | 2019.10.10 |
---|---|
상수에 대한 참조자 (0) | 2019.10.10 |
래퍼런스의 도입 (0) | 2019.10.10 |
std::cin (0) | 2019.10.10 |
c++공부를 시작합니다. (0) | 2019.10.10 |