이름공간(namespace)
이름과 매개변수가 같은 두 개 함수가 있다.
이름과 매개변수가 같기 때문에 컴파일 할 때 오류가 발생한다.
중복되는 이름이 적으면 함수명을 바꿔주는 방법이 있다.
하지만 일일히 바꿔주기 힘들 정도로 많다면 어떻게 할까?
바로 namespace를 사용하여 간단히 바꿀 수 있다.
namespace 이해하기 |
다음과 같이 두개의 함수가 있다.
void printMessage() { std::cout<<"내가 정의한 메시지"<<std::endl; } void printMessage() { std::cout<<"친구가 정의한 메시지"<<std::endl; } |
함수 명과 매개변수까지 동일 하여 컴파일 시 문제가 된다.
이 때 namespace를 사용해 해결해 보자.
[namespace 사용법]
namespace Me { void printMessage() { std::cout<<"내가 정의한 메시지"<<std::endl; } } namespace Friend { void printMessage() { std::cout<<"친구가 정의한 메시지"<<std::endl; } } |
이제 컴파일은 문제가 되지 않지만 두 함수를 호출은 어떻게 할까?
[각 함수 호출 방법]
Me::printMessage(); |
namespace 명::함수 명
[전체 예제]
#include <iostream> namespace Me { void printMessage() { std::cout<<"내가 정의한 메시지"<<std::endl; } } namespace Friend { void printMessage() { std::cout<<"친구가 정의한 메시지"<<std::endl; } } int main(int argc, char** argv) { Me::printMessage(); return 0; } |
내가 정의한 메시지 |
using을 이용하여 namespace를 명시 |
메시지를 출력하기 위해 std::cout 함수를 사용한다.
여기서 std는 namespace 이며 cout은 함수이다.
std::cout
std::endl
매번 std::을 코딩하기 번거롭다.
이를 해결 하기 위해 using을 사용해 std::를 제거해 보자.
[사용법]
using std::cout; using std::endl; |
[전체 예제]
#include <iostream> using std::cout; using std::endl; int main(int argc, char** argv) { cout<<"hello"<<endl; return 0; } |
hello |
위에 예제에서 cout, endl을 호출 할 때 std::가 없이 호출 되었음을 확인 할 수 있다.
'프로그램 > C++' 카테고리의 다른 글
[C++] 참조자(Reference) 사용법 (0) | 2017.12.30 |
---|---|
[C++] bool 자료형 (0) | 2017.12.29 |
[C++]인라인 함수 사용법 (0) | 2017.12.26 |
[C++]함수 매개변수 디폴트 값 (0) | 2017.12.25 |
[C++]함수 오버로딩 (Function Overloading) (0) | 2016.12.03 |