반응형

** 본 게시물은 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


반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.9
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함