본문 바로가기
프로그래밍언어/C++

[C++]namespace(이름공간) 사용법

by 연어바케트 2020. 12. 6.
반응형

함수명과 매개변수가 동일하게 사용되는 두개 이상의 함수가 있을때 

함수명 매개변수가 같기때문에 컴파일 문제가 발생한다. 

 

C++에서는 java와 C#과 다르게 가장 최소 단위가 함수 단위다. main함수만 있어도 실행이된다. 

클래스로 확장이 가능하고 더 큰 함수면 dll등을 통해 참조 형식으로 사용한다. 

 

그러나 함수나 클래스만으로 유니크 명명에 한계있다. 

클래스 명이 겹치는 경우가 발생할 수 도 있다. 

그래서 이를 해결하기 위해서 namespace가 있다. java의 package와 같은 개념이다. 

 

간단하게 테스트 해보면 아래와 같다.

 

AAA()라는 이름을 가진 함수 2개를 만들어 하나는 3을 반환하고 하나는 6을 반환하게 

만들어 테스트를 진행해본다. 

#include<iostream>
int AAA()
{
	return 3;
}
int AAA()
{
	return 6;
}
int main()
{
	std::cout << AAA() + AAA();
	return 0;
}

해당 코드를 컴파일하면 당연히 오류가 뜨게된다.

이미 AAA()라는 함수명을 가진 함수가 존재하는데 한번더 정의 했기 때문에 사용할 수가 없다. 

 

 

하지만 namespacse를 사용하게 되면 이 경우는 달라지게 된다. 

#include<iostream>
namespace first
{
	int AAA()
	{
		return 3;
	}
}
namespace sencond
{
	int AAA()
	{
		return 6;
	}
}
int main()
{
	std:: cout << first::AAA()  +	sencond::AAA();
	return 0;
}

함수명은 AAA()로 같지만 다른 namespace를 가지기 때문에 아무러 문제 없이 컴파일이 성공되는 모습을 볼 수 있다. 

반응형

댓글