study/C++

이름공간(namespace)에 대한 소개

IT공부 2020. 5. 19. 19:50
반응형

namespace1.cpp

#include<iostream>
using namespace std;

namespace ComImp1
{
	void SimFunc(void)
	{
		cout<<"BestCom이 정의한 함수"<<endl; 
	}
}

namespace ComImp2
{
	void Simple(void)
	{
		cout<<"ProgCom이 정의한 함수"<<endl;
	}
}

int main(void)
{
	ComImp1::SimpleFunc();
	ComImp2::SimpleFunc();
	return 0;
}

실행결과

BestCom이 정의한 함수

ProgCom이 정의한 함수

 

"namespace는 이름 공간을 의미를 하는 것이고, 똑같은 프로그램을 각기 다른 사람이 코딩을 하게 된다면은 똑같은 함수가 정의될 수 있는 상황에 그것을 구분하기 위해서 쓰인다"

 

예제에서 사용된 연산자 ::을 가르켜 "범위 지정 연산자(scope resolution operator)"라 하며, 그 이름이 의미하듯이 이름 공간을 지정할 때 사용하는 연산자이다. 

 

이름 공간 기반의 함수 선언과 정의의 구분 

#include<iostream>
using namespace std;

namespace ComImp1
{
	void SimpleFunc(void);
}

namespace ComImp2
{
	void SimpleFunc(void);
}

int main(void)
{
	ComImp1::SimpleFunc();
	ComImp2::SimpleFunc();
	return 0;
}

void ComImp1::SimpleFunc(void)
{
	cout<<"BestCom이 정의한 함수"<<endl;
}


void ComImp2::SimpleFunc(void)
{
	cout<<"ProgCom이 정의한 함수"<<endl;
}

실행결과 

BestCom이 정의한 함수 

ProgCom이 정의한 함수 

 

 

이름 공간의 중첩 

namespace Parent
{
	int num=2;
    
    namespace SubOne
    {
    	int num=3;
    }
    
    namespace SubTwo
    {
    	int num=4;
    }
}


int main(void)
{
	cout<<"Parent num:"<<Parent::num<<endl;
    cout<<"SubOne num:"<<Parent::SubOne::num<<endl;
    cout<<"SubTwo num:"<<Parent::SubTwo::num<<endl;
    return 0;
 }

 실행결과

Parent num: 2

SubOne num: 3

SubTwo num: 4

 

'study > C++' 카테고리의 다른 글

malloc & free를 대체하는 new & delete  (0) 2020.05.20
참조자(Reference)  (0) 2020.05.19
자료형 bool  (0) 2020.05.19
매개변수의 디폴트 값(Default Value)  (0) 2020.05.19
함수 오버로딩(Function Overloading)  (0) 2020.05.19