namespace
- 사람의 성과 같이, 네임스페이스는 하위 변수, 함수들을 구분할수 있도록 해준다
- 사용 표현은 '(namespace)::(변수 또는 함수)'다
- 중첩 가능하다
- 네임스페이스 안에 있는 함수에 사용되는 변수는, 명시하지 않아도 네임스페이스의 변수를 사용한다
- 네임스페이스 선언과 정의를 떼어서 쓸 수 있다 처음 선언을 해주면 언제든지 정의를 별도로 해줄 수 있다
- using namespace를 사용하면, 명시하지 않아도 해당 네임스페이스로 인식한다
주의 네임스페이스 안에 있는 함수에 사용되는 변수가 다른 네임스페이스를 명시한다면, 명시된 변수를 사용한다
ex) namespace doodle {
int n;
void set() {
n = 20;
}
}
C언어와 다른점
1. 변수 선언을 할 때 int a = 10을 int a(10)으로 표현이 가능하다
ex) int a(5); int a = 5;와 같고, 둘 다 사용해도 된다
int b(3+4); int b = 3 + 4;와 같다
2. 범위 기반 for문은 간략화 가능하다
주의 int n = arr[i]가 자동으로 추가된 형태이기 때문에 for문에서 배열 수정은 불가능하다 n앞에 &를 붙이면 가능하다
ex) for (int n : arr) {cout << n << endl;} for (int i = 0; i < 10; i++) {cout << arr[i] << endl;}와 같고 둘 다 사용 가능하다
3. 필요한 자료형이 다른 함수들을 하나의 이름으로 통일이 가능하다 매개변수의 자료형을 자동으로 인식하기 때문
이를 오버로딩이라고 부른다
주의 매개변수가 누적되는 형태라면, 디폴트 매개변수를 쓰는 것이 좋다
ex) void getItem(int itemID, int cnt = 1, int sc = 0) {/* 중략 */} 디폴트 매개변수 예시
'Study > C C++' 카테고리의 다른 글
[두들낙서] 동적 할당 (0) | 2021.03.04 |
---|---|
[두들낙서] 클래스와 객체 (0) | 2021.03.04 |
[두들낙서] 상수 (0) | 2021.03.01 |
[두들낙서] 구조체 (0) | 2021.03.01 |
[두들낙서] 함수 (0) | 2021.03.01 |