반응형
C++ namespace?
하나의 프로그램에서 여러 파일이 생성되고, 여러 사람들이 붙어 개발을 하면 동명을 가진 경우가 발생한다.
위와 같은 경우 함수명이나 구조체 명, 그리고 변수명이 같아지면 이름 충돌이 발생해 오류가 발생된다.
이런 충돌을 방지하기 위해 만들어진 것이 namespace의 개념이다.
namespace는 함수나 구조체 혹은 변수 이름 등의 소속을 정해주는 것
----------------------------------------------------------------------------------------------
형식
namespace [namespace name]
{
함수, 구조체, 변수, 클래스 등등
}
------------------------------------------------------------------------------------------------
#include<iostream>
void printAll(){
cout << "printAll 함수" << endl;
}
void printAll(){
cout << "printAll 함수" << endl;
}
int main(void)
{
//printAll 함수 호출
printAll();
return 0;
}
위와 같이 사용하면 printAll()이라는 함수가 서로 충돌될 수 있다는 경우를 말하는 것인데
#include <iostream>
using namespace std;
namespace A {
void printAll() {
cout << "A의 printAll 함수" << endl;
}
}
namespace B {
void printAll() {
cout << "B의 printAll 함수" << endl;
}
}
int main(void)
{
//printAll 함수 호출
A::printAll();
B::printAll();
return 0;
}
이처럼 A, B를 나눠줌으로써 각 함수를 감싸 이름 충돌을 방지할 수 있게 되는 것이다.
namespace라는 소속 공간에 따라 다르게 구분한다는 것은, 마치 하나의 객체를 연상시킨다.
C++도 OOP로, namespace가 C++에서의 하나의 객체 단위를 이룬다고 볼 수 있다.
C에서의 변수에 대한 접근 방법처럼 namespace 또한 변수에 대한 접근 방식이 여러가지 있다.
다음 포스팅에서 다루겠다.
반응형
'Language & Framework & GIT > C++' 카테고리의 다른 글
[씨앤씨뿔]C++/ C++의 기본 - 3 (0) | 2023.04.17 |
---|---|
[씨앤씨뿔]C++/ C++의 기본 - 2 (0) | 2023.04.14 |
[씨앤씨뿔]C++/ C++의 기본 - 1 (0) | 2023.04.13 |
[씨앤씨뿔]C++/ namespace - 2 (1) | 2023.04.13 |
[씨앤씨뿔] C++ 기초/ 입출력 문자 (0) | 2023.04.12 |
댓글