반응형
namespace 가 필요한 이유
여럿이서 작업을 할때 서로 사용자 정의 명칭이 같을 경우가 있다. 이럴경우 컴파일 에러가 발생하게 된는데, 이런 경우를 방지하기 위해서 이름공간이라는 키워드가 생기게 되었다.
예시를 보면 이해가 더 잘 된다.
#include <iostream>
using namespace std;
void MyFunc()
{
cout << "My first function" << endl;
}
void MyFunc()
{
cout << "My second function" << endl;
}
int main()
{
MyFunc();
}
컴파일 진행시 당연히 컴파이 에러가발생된다
"MyFunc" 선언되지 않은 식별자입니다. 라는 에러 메시지가 나온다.
이번에는 namespace 를 사용해보겠다.
#include <iostream>
using namespace std;
namespace FirstMade {
void MyFunc()
{
cout << "My first function" << endl;
}
}
namespace SecondMade {
void MyFunc()
{
cout << "My second function" << endl;
}
}
int main()
{
FirstMade::MyFunc();
SecondMade::MyFunc();
}
namespace는 키워드를 사용해서 정의된 함수를 감싸주어서 사용한다.
::
은 ' 범위지정 연산자 ' 라고 하며, 이름공간을 지정할 때 사용하는 연산자이다.
다음은 함수의 원형 선언 방법이다.
#include <iostream>
using namespace std;
namespace FirstMade {
void MyFunc();
}
namespace SecondMade {
void MyFunc();
}
int main()
{
FirstMade::MyFunc();
SecondMade::MyFunc();
}
void FirstMade::MyFunc(){
cout << "My Function from First Made namespace" << endl;
}
void SecondMade::MyFunc() {
cout << "My Function from Second Made namespace" << endl;
}
반응형
'c++ > c 언어 기반의 c++ 1' 카테고리의 다른 글
01-06 [C++] OOP 프로젝트 Bank Account (0) | 2022.12.28 |
---|---|
01-04 [C++]인라인 (Inline) 함수 (2) | 2022.12.28 |
01-03 [C++] 매개변수의 디폴트 값 (Default Value) (0) | 2022.12.27 |
01-02 [C++] 함수 오버로딩 (Function Overloading) (2) | 2022.12.27 |
01-01 [c++] 입 출력 연산자 (0) | 2022.12.27 |