반응형
함수명과 매개변수가 동일하게 사용되는 두개 이상의 함수가 있을때
함수명 매개변수가 같기때문에 컴파일 문제가 발생한다.
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를 가지기 때문에 아무러 문제 없이 컴파일이 성공되는 모습을 볼 수 있다.
반응형
'프로그래밍언어 > C++' 카테고리의 다른 글
[c++] typedef 란? 사용법 (0) | 2021.04.19 |
---|---|
[c++] chrono 시간 측정 예제 (0) | 2021.01.17 |
[C++] zip/unzip라이브러리 이용, 압축 해제 (0) | 2020.07.21 |
[c++]error c2668 'pow' 오버로드된 함수에 대한 호출이 모호합니다 (0) | 2020.07.14 |
[c++]std::vector의 size와 capacity (0) | 2020.03.18 |
댓글