본문 바로가기

컴퓨터 공학 일지/C++

C++ 네임스페이스와 입출력문 std::cout | std::cin | std::endl

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