C++ 에서 콘솔의 입출력을 담당하던 3가지
- std::cout
- std::cin
- std::endl
이는 우리가 앞서 배운 네임스페이스 개념이 사용되었습니다.
네임스페이스 개념에서 :: 은 범위지정 연산자였고 이는 네임스페이스 영역을 지정해줄 때 사용됩니다.
이 연산자의 개념과 네임스페이스 개념을 이해하였다면 위의 3개는 다음과 같은 해석이 가능합니다.
- 네임스페이스 std에 선언된 cout
- 네임스페이스 std에 선언된 cin
- 네임스페이스 std에 선언된 endl
이는 다음과 같은 구조를 가집니다.
namespace std
{
cout . . . .
cin . . . .
endl . . . .
}
즉, 우리는 입출력문을 다음과 같이 사용할 수 있음을 시사하기도 합니다.
#include <iostream>
using namespace std;
int main(void)
{
int a=0;
cout << " hello world " << endl;
cin >> a;
}
보시는 바와 같이 기존에 std::cout 방식이 cout로 변경되었습니다.
또한 우리는 네임스페이스가 과도하게 사용되었을 경우 별칭을 지정할 수 있습니다.
namespace A{
namespace B{
namespace C{
int num=10;
}
}
}
위처럼 네임스페이스를 3번이나 중첩했을 때 num 변수를 사용하려면
A::B::C::num1; 로 사용해야합니다.
이는 너무 불편해보이죠.
이럴 경우 namespace ABCgroup = A::B::C; 로 지정할 경우
ABCgroup 공간안에 A::B::C 의 공간이 저장된다 라는 의미로 해석할 수 있습니다.
이렇게 네임스페이스를 선언하면 num을 ABCgroup::num; 으로 접근할 수 있죠.
범위 연산자의 또 다른 기능
언어들의 공통된 특징 중 하나는 지역변수의 이름이 전역변수와 같을 경우 전역변수는 지역변수에 의해 가려집니다.
int Var = 100; //전역변수
int function(void){
int Var = 10; //지역변수
Var += 3; //지역변수 3 증가
}
위처럼 전역변수와 지역변수의 이름이 같을 경우 함수 내에서 Var에 접근하면 지역변수에만 접근이됩니다.
하지만 :: 연산자를 활용하면 이름이 같은 경우에도 전역 변수에 접근이 가능해집니다.
int Var = 100; //전역변수
int Function(void)
{
int Var = 10; //지역변수
Var += 3; //지역변수 3 증가
::Var += 10; //전역변수 10 증가
}
위처럼 :: 범위연산를 통해 해당 변수는 전역변수를 접근한다는 의미로 사용이 가능해집니다.
'컴퓨터 공학 일지 > C++' 카테고리의 다른 글
C++ C 복습 문제 (0) | 2019.12.16 |
---|---|
C++ 은행 계좌 관리 프로그램 (0) | 2019.12.16 |
C++ 이름공간(네임스페이스{namespace}) (0) | 2019.12.16 |
C++ 인라인 함수 (0) | 2019.12.16 |
C++ 디폴트 값 (0) | 2019.12.10 |