[C++] 이름공간(name space)과 using 선언
Selovic
0
151
0
0
2018.10.24 02:54
C++에는 name space 라는것이 존재하는데, 활용하는이유는 간단합니다.
* 여러 라이브러리를 활용하려고 할 때,
함수명이 같은 경우 이름충돌현상을 막을 수 있습니다.
대표적인 형태는 아래와 같습니다
바로 std 이름공간안에 있는 cout 함수를 사용하는 것인데요
C++에서 사용하는 대부분의 표준이 std에 지정되어있기때문에
대부분의 함수를 사용하려면 std를 사용해야된다는 것!
추가로, 동일한 이름공간 안에 존재하는 함수는
이름공간을 언급하지 않고 사용이 가능하고,
이름공간은 계층구조처럼 활용이 가능합니다
예를들면
이런식으로 계층구조로 만들 수 있습니다.
하지만 매번 이렇게 사용한다면 너무 길기 때문에
별칭을 부여할 수도 있습니다.
상단 전처리기 부분에 아래와 같이 추가해줍니다
그렇다면 앞으로 hhw 라고 이름공간을 부를 수 있게 됩니다.
<using 선언>
앞서 말씀드렸던것 처럼,
C++ 대부분의 표준함수가 std에 속해 있습니다.
다르게 말씀드리면 간단한 출력이나 입력을 하기 위하여
cout, cin 등의 함수를 사용하기 위해서도
std 네임스페이스를 호출해야 하는데요,
매번 번거롭기 때문에 using 선언을 할 수 있습니다.
cin 함수를 사용할 때에는 std 이름공간을 언급하지않겠다는 선언입니다.
std안에 포함되어있는 함수는 이름공간을 언급하지 않겠다는 선언입니다.
아주 유용하고 좋은 기능이지만
무분별하게 사용하면 namespace의 존재를
무의미하게 만들 수 있기때문에
매우 선별적으로 사용하는것을 추천합니다.
간단한 using 선언예시를 보여드리겠습니다.
살펴보면서 확인하시기 바랍니다.
* 여러 라이브러리를 활용하려고 할 때,
함수명이 같은 경우 이름충돌현상을 막을 수 있습니다.
대표적인 형태는 아래와 같습니다
std::cout<<"hacure";
바로 std 이름공간안에 있는 cout 함수를 사용하는 것인데요
C++에서 사용하는 대부분의 표준이 std에 지정되어있기때문에
대부분의 함수를 사용하려면 std를 사용해야된다는 것!
추가로, 동일한 이름공간 안에 존재하는 함수는
이름공간을 언급하지 않고 사용이 가능하고,
이름공간은 계층구조처럼 활용이 가능합니다
예를들면
hacure::hacuresoft::website
이런식으로 계층구조로 만들 수 있습니다.
하지만 매번 이렇게 사용한다면 너무 길기 때문에
별칭을 부여할 수도 있습니다.
상단 전처리기 부분에 아래와 같이 추가해줍니다
namespace hhw = hacure::hacuresoft::website;
그렇다면 앞으로 hhw 라고 이름공간을 부를 수 있게 됩니다.
<using 선언>
앞서 말씀드렸던것 처럼,
C++ 대부분의 표준함수가 std에 속해 있습니다.
다르게 말씀드리면 간단한 출력이나 입력을 하기 위하여
cout, cin 등의 함수를 사용하기 위해서도
std 네임스페이스를 호출해야 하는데요,
매번 번거롭기 때문에 using 선언을 할 수 있습니다.
using std::cin;
cin 함수를 사용할 때에는 std 이름공간을 언급하지않겠다는 선언입니다.
using namespace std;
std안에 포함되어있는 함수는 이름공간을 언급하지 않겠다는 선언입니다.
아주 유용하고 좋은 기능이지만
무분별하게 사용하면 namespace의 존재를
무의미하게 만들 수 있기때문에
매우 선별적으로 사용하는것을 추천합니다.
간단한 using 선언예시를 보여드리겠습니다.
살펴보면서 확인하시기 바랍니다.
#include <iostream> using namespace std; int main() { cout << "너비를 입력하세요>>"; int width; cin >> width; // 키보드로부터 너비를 읽어 width 변수에 저장 cout << "높이를 입력하세요>>"; int height; cin >> height; // 키보드로부터 높이를 읽어 height 변수에 저장 int area = width*height; // 사각형의 면적 계산 cout << "면적은 " << area << "n"; // 면적을 출력하고 다음 줄로 넘어감 }