[C++] 범위 지정 연산자(::), using namespace std;
2024. 3. 19. 13:30ㆍProgramming Language/C++
범위 지정 연산자(Scope 연산자) ::
• 특정 범위를 확인해 보는 연산자
using namespace std;
직역하면 다음과 같다.
➜ using
: 사용한다
➜ namespace
: 네임스페이스(이름 공간)를
➜ std
: std라는
std라는 네임스페이스(이름 공간)를 사용한다.
using namespace std; // 이 문장을 직역하면 '표준 네임스페이스를 사용한다.'는 의미이다.
cin
, cout
기능을 사용하지 않는 상태에서 해당 기능을 사용하고 싶을 때 네임스페이스와 ::
를 매번 붙이기 번거롭다.
std::
를 쓰지 않고도 해당 기능을 사용하고 싶을 때 std
(standard, 표준)라는 네임스페이스를 사용하겠다고 선언한다.
그럼 std
라는 네임스페이스가 없는 취급이 된다.
다시 말하면, 해당 네임스페이스를 생략하고 바로 사용할 수 있게 된다.
네임스페이스 통째로 해제시키면 누굴 지칭하는지가 애매해져서 원래 네임스페이스의 목적을 상실해 버린다.
때문에 자주 쓸 것 같은 것만 개별적으로 선언해 주는 것이 좋다.
▶ 통째로 선언한 경우
using namespace std;
▶ 개별적, 세부적으로 선언한 경우
using std::cout;
using std::cin;
using std::endl;
namespace(네임스페이스, 이름 공간)
• 사용하는 이유 : 변수명 중복 예방
사용자가 동일한 이름의 변수명을 사용할 수도 있는데 구별이 어렵고 변수가 중복돼서 문제가 발생한다.
때문에 표준으로 제공해 주는 기능들을 std
라는 네임스페이스 안에 넣어서 제공해 준다.
네임스페이스가 다르면 동일한 변수명을 사용할 수 있다.
▷ 예시
// 네임 스페이스
namespace MYSPACE
{
int g_int; // 전역 변수
}
namespace OTHERSPACE
{
int g_int;
}
int main()
{
//g_int = 0; // 오류 => MYSPACE 안에 선언되어있기 때문이다.
MYSPACE::g_int = 0; // 네임스페이스에 접근하려면 범위 지정자(::)를 사용해야 한다.
// 동일한 변수명(g_int)이지만 다른 공간에 있기 때문에 가능하다.
OTHERSPACE::g_int = 0;
return 0;
}
▷ 예시
#include <iostream>
// using
// using으로 해제하면 std에서 제공하는 이름과 똑같이 사용할 수 있다.
// 개별적, 세부적으로 해제
using std::cout;
using std::wcout;
using std::cin;
using std::endl;
int main()
{
// wcout에 그냥 한글을 넣으면 ??로 나오면서 깨진다.
// VS 지역 언어 설정을 표준으로 쓰다보니까 한글 설정이 기본으로 안 되어있을 수 있다.
// 아스키 코드 대응표를 한글 쪽으로 맞춰준다.
setlocale(LC_ALL, "korean");
_wsetlocale(LC_ALL, L"korean");
cout << 10 << endl;
wcout << L"한글";
return 0;
}
▽ 출력 결과
10
한글
'Programming Language > C++' 카테고리의 다른 글
[C++] iterator (0) | 2024.03.20 |
---|---|
[C++ STL] 벡터(vector), 리스트(list) (0) | 2024.03.19 |
[C++] 구조체 · 클래스 템플릿으로 리스트 구현 (0) | 2024.03.18 |
[C++] 클래스를 이용한 가변 배열 (0) | 2024.03.18 |
[C++] 클래스 (+ 멤버 함수, this 포인터) (0) | 2024.03.18 |