반응형
등장배경
프로그램이 대형화 되면서 이름의 충돌문제가 발생한다. 예를들어 은행관리 시스템을 개발하는데 세개의 회사가 참여를 했다고 가정하면 각각 회사가 구현한 모듈을 하나로 묶고 부족한 부분을 완성할 때가 되었을때 각각 회사의 함수이름이 같아 이름 출돌이 발생, 상황에 따라서 프로그램의 상당부분에 영향을 미칠 이리기 때문에 서로 싸움이 날것이다. 프로젝트를 진행하기 전에 함수 및 변수의 이름을 모두 정해서 이름충돌이 발생하지 않게 하는것이 해결책이 아니며 C++에서는 'namespace'를 통해 근본적인 해결책을 제시해준다.
#include<iostream>
namespace BestCom
{
void SimpleF(void);
}
namespace BestCom
{
void PrettyF(void);
}
namespace ProgCom
{
void SimpleF(void);
}
int main(void)
{
BestCom::SimpleF();
return 0;
}
void BestCom::SimpleF(void)
{
std::cout<<"BestCom 이 정의한 함수 "<<std::endl;
PrettyF();
ProgCom::SimpleF();
}
void BestCom::PrettyF()
{
std::cout<<"BestCom의 PrettyCom 정의한 함수 "<<std::endl;
}
void ProgCom::SimpleF()
{
std::cout<<"ProgCom 이 정의한 함수 "<<std::endl;
}
추가로 이름공간의 별칭사용
#include<iostream>
using namespace std;
namespace AAA
{
namespace BBB
{
namespace CCC
{
int num1;
int num2;
}
}
}
int main(void)
{
AAA::BBB::CCC::num1=20;
AAA::BBB::CCC::num2=30;
namespace ABC=AAA::BBB::CCC;
cout<<ABC::num1<<endl;
cout<<ABC::num2<<endl;
return 0;
}
반응형
'IT > Programming' 카테고리의 다른 글
C++ <OOP단계별 프로젝트 1단계-BANK> (0) | 2023.04.18 |
---|---|
C++ <범위지정연산자 기능> (0) | 2023.04.18 |
C++ <inline> (0) | 2023.04.18 |
C++ <Function Overloading> (0) | 2023.04.18 |
C++ <구구단> (0) | 2023.04.18 |