2016. 12. 7. 23:06 C++/공부
C++] 기초(5) - 이름공간(namespace)
** 본 게시물은 C++을 복습하며 정리하는 글입니다. 틀린 부분이 있다면 지적 부탁드립니다!! 현재 "윤성우의 열혈강의 C++"교재로 공부중이며 좀 더 상세한 설명을 원하시는 경우에는 책을 구매해서 찾아보시길 권장합니다.
[들어가기 전]
이름공간은 그대로 '이름을 붙여놓은 공간'을 의미하며, 특정 영역에 이름을 붙여주기 위하여 사용된다.
(이름공간의 등장 배경)
예를들어 여러 사람이 하나의 프로젝트에 참여하여 하나의 프로그램을 만든다고 가정하자.
근데 하필이면 'A', 'B', 'C' 세 사람의 작명센스가 비슷하였다. 그리고 정수의 계산을 실행하는 함수를 세명 다 "CalcFunc()"이라고 정의하였다. 여기서 우리는 혼란이 오기 시작한다. 같은 이름이며 다른 기능을 할 수도 있는 함수 3개가 있기에 무엇을 써야 할 지 모르기 때문이다. 그래서 등장한 것이 바로 "이름공간(namespace)"이다.
우리가 사용하는 std::의 경우도 C++ 기본 라이브러리가 제공하는 이름공간이며, 'std'이름공간 안에 'cout, cin, ...'등의 함수가 있다는 결론이 나온다. (::는 범위지정 연산자라고 불리운다.)
[예제]
ex)
출력결과)
'A'가 정의한 함수
1+2=3;
'B'가 정의한 함수
3*4=12;
'C'가 정의한 함수
10-7=3;
[추가]
1) using namespace 키워드
using namespace는 해당 이름공간 내부에 선언된 모든 함수를 접근하겠다는 의미이다. 그러므로 "using namespace 이름공간명칭" 의 형식을 사용하면 이름공간 내의 함수를 호출 할 때마다 번거롭게 "이름공간::"을 붙여줄 필요가 없다.
ex)
출력결과)
using namespace 예제
**주의: 상당히 편한 방법이긴하나 이렇게 할 경우 이름공간의 충돌이 발생할 수 있다. 그러므로 개발자의 적절한 판단이 요구된다.
2) :: 연산자
범위지정 연산자라고 불리운다. 함수 내에서 "::"연산자를 사용할 경우 함수 바로 밖의 범위에 접근할 수 있다. 예를들면 cmd의 "cd .."명령어의 ".."과 같은 맥락이라고 생각하면 된다.
ex)
출력결과)
31
0
'C++ > 공부' 카테고리의 다른 글
C++] 기초(7) - 참조자(Reference) (0) | 2016.12.08 |
---|---|
C++] 기초(6) - const 키워드 (0) | 2016.12.08 |
C++] 기초(4) - 인라인(inline) 함수 (0) | 2016.12.07 |
C++] 기초(3) - 함수 매개변수의 디폴트 값 (0) | 2016.12.06 |
C++] 기초(2) - 함수 오버로딩(Overloading) (0) | 2016.12.06 |