1. namespace - 네임스페이스
네임스페이스는 코드에서 이름이 서로 충돌하는 문제를 해결하기 위해 나왔다.
#include <iostream>
namespace myCode {
void Code()
{
std::cout << "Code() 가 namespace에서 호출" << std::endl;
}
}
int main()
{
myCode::Code();
return 0;
}
-> 이런식으로 myCode 네임스페이스 아래에 두면 외부 라이브러리에 Code( ) 가 있더라도 구분할 수 있다.
-> 네임스페이스를 적용한 Code를 호출하려면 스코프 지정 연산자(::) 를 이용해야 한다.
#include <iostream>
namespace myCode {
void Code()
{
std::cout << "Code() 가 namespace에서 호출" << std::endl;
}
}
using namespace myCode;
int main()
{
Code(); // = myCode::Code();
return 0;
}
-> using 지시자를 사용하면 뒷 부분을 생략할 수도 있다.
◾ 그리고 cout , endl 은 std 네임스페이스에 정의된 이름이다.
include <iostream>
using namespace std;
int main()
{
cout << "안녕하세요" << endl; // std:: 생략가능
return 0;
}
-> 대부분 std 네임스페이스에 대해 using 디렉티브를 적용한다. 따라서 std:: 를 붙이지 않는다.
❗ 헤더 파일 안에서는 절대로 using 문을 작성하면 안 된다. 그 헤더 파일을 인클루드하는 모든 파일에서 using 문으로 지정한 방식으로 호출해야 하기 때문이다.
2. nested namespace - 중첩 네임스페이스
중첩 네임스페이스는 다른 namespace 안에 있는 namespace를 말한다. 이 때 각 namespace 는 :: 으로 구분한다.
namespace MyLibraries::Networking::FTP {
/* */
}
3. namespace alias - 네임스페이스 앨리어스
네임스페이스 앨리어스는 네임스페이스의 이름을 다르게 만들거나 더 짧게 만들 수 있다.
namespace MyFtp = MyLibraries::Networking::FTP;
'C++ > C++ 기초 문법' 카테고리의 다른 글
[C++] 열거 타입 (0) | 2023.12.22 |
---|---|
[C++] 인라인(inline) 함수 (0) | 2023.12.22 |
[C++] 매개변수의 디폴트 값 (0) | 2023.12.21 |
[C++] 함수 오버로딩 (0) | 2023.12.21 |
[C++] C++ 기초 (0) | 2023.12.20 |