| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- linked list
- 문자열
- 트리
- mutable
- #선물 #비트코인#알트코인#매매#코인#마진
- 선물
- 후위
- 기초
- Data Structure
- C++
- 자료구조
- 전위
- array
- Windows
- trading view
- 오버로딩
- SCM
- 숫자
- Basic
- 바이낸스
- 이진 탐색 트리
- 템플릿 함수화
- 순회
- 비트코인
- Python
- 연결 리스트
- BST
- template
- Tree
- 알고리즘
Archives
- Today
- Total
Project Hub
1. namespace 본문
728x90
반응형
namespace(이름공간)
개체를 구분할 수 있는 범위를 나타내는 말
함수나 구조체 혹은 변수 이름 등의 소속을 정해주는 것
아래는 namespace 사용 예시 중 하나다.
각각의 header1, header2 라는 namespcae 가 있고, 그 안에 foo, bar 라는 이름의 함수가 정의되어 있다.
header1.h 혹은 header2.h 가 선언된 공간에서는 굳이 앞에 namespace 를 명시하지 않고 자유롭게 사용 가능하다.
// header1.h 의 내용
namespace header1
{
int foo();
void bar();
}
// header2.h 의 내용
namespace header2
{
int foo();
void bar();
}
반면에 어떠한 namespace 에도 소속되지 않는 경우라면 아래와 같이 명시적으로 namespace를 지정해야 한다.
#include "header1.h"
namespace header1
{
int func()
{
foo(); // header1::foo() 가 실행된다.
}
}
header1과 header2의 함수들을 적절히 사용하길 원한다면 아래와 같이 명시적으로 namespace를 지정해주면 된다.
#include "header1.h"
int func()
{
header1::foo(); // header1::foo() 가 실행된다.
}
위 내용을 정리하면, 아래와 같이 두 가지의 방법이 존재하고,
더 권장되는 방식은 using namespace std; 와 같이 사용하는 것 보다는
std:: 와 같이 직접 사용 할 함수 앞에 붙여 std의 namepsace 함수라는 것을 명시하는 것이 권장된다.
#include "header1.h"
#include "header2.h"
// 더 권장하는 방식
int func()
{
header1::foo(); // header1::foo() 가 실행된다.
header2::bar(); // header2::bar() 가 실행된다.
}
////////////////////////////////////////////////////
#include "header1.h"
using namespace header1;
int func()
{
foo(); // header1::foo() 가 실행된다.
}
추가적으로 이름이 없는 namespace도 있다.
이 경우는 해당 namespace에 정의된 것들은 해당 파일 안에서만 접근할 수 있게 된다.
마치 static 키워드를 사용한 것과 같은 효과를 낸다.
#include <iostream>
namespace
{
// 이 함수는 이 파일 안에서만 사용할 수 있다.
// static int OnlyInThisFile() 과 동일하다.
int OnlyInThisFile() {}
//이 변수 역시 static int only_in_this_file 와 동일하다.
int only_in_this_file = 0;
} // namespace
int main()
{
OnlyInThisFile();
only_in_this_file = 3;
}
728x90
반응형
'C++ > c++ basic' 카테고리의 다른 글
| 6. Wrapper 클래스 - 타입변환 연산자 (3) | 2022.12.21 |
|---|---|
| 5. 연산자 오버로딩, friend 키워드 (3) | 2022.12.21 |
| 4. implicit, explicit, mutable 키워드 (2) | 2022.12.21 |
| 3. copy consturctor (2) | 2022.12.21 |
| 2. reference (1) | 2022.12.21 |
Comments