Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- c++ 베이직
- 브론즈
- Unreal
- build.cs
- 헤더 경로
- CS
- 툰쉐이딩
- UE_5
- Console
- leetcode
- STL
- 언리얼
- 백준
- Module
- 코드리뷰
- 언리얼 엔진5 #언리얼 클라이언트 프로그래밍
- Toon Shading
- 원카페#무인카페#카페추천#카페맛집
- 순환 리스트
- Harvard
- topdownmove
- 오늘밤 세계에서 이 사랑이 사라진다 해도 #독후감 #오열
- 메테리얼
- C++
- 네트워크 기초
- A* Algorithm
- Gas
- 폭설 #미친 날씨
- 언리얼엔진5 #언리얼 클라이언트 프로그래밍
- CS50
Archives
- Today
- Total
WN_인생기록
namespace 본문
배울땐 그저 이름 충돌 방지하는 그런 역할로 알고있었는데, 깊게 생각해본적이 없어서 한번 정리해보려 한다.
우리가 주로 쓰는건 iostream의 std 인데. 정확하게 무슨 역할을 하고 어떤 기능을 하는지 알아보자.
먼저 :: 연산자에 대해 먼저 알아보자면 namespace에서 사용할 수 있는 정의된 내용들에 접근할 수 있는 연산자이다.
namespace란 프로그래머가 식별자의 논리적 그룹을 정의할 수 있게하는 범위이다.
말로 해서는 뭔가 이해가 잘 되지 않는다. 코드를 보자.
#include <iostream>
using namespace std;
//using namespace Math1;
//using namespace Math2;
namespace Math1
{
int add(int a, int b)
{
return a + b;
}
}
// Math1 이라는 범위에서 쓰이는 함수 add 생성
namespace Math2
{
int add(int a, int b)
{
return a + b;
}
}
// Math2 이라는 범위에서 쓰이는 함수 add 생성
int main()
{
int x, y,z;
int a, b, c;
x = 3;
y = 5;
z = Math1::add(x, y);
a = 1;
b = 3;
c = Math2::add(a, b);
cout << z << "\n";
cout << c << "\n";
}
// 함수의 이름이 같지만, 앞에 붙어있는 범위가 다르므로 어디에서 쓰이는 함수인지 구분이 가능하다
정리하자면
C++ 에서는 같은 범위내에서 같은 이름을 가진 변수, 함수, 클래스는 컴파일러가 헷갈려한다. 그러나 namespace로 규정된 범위 내에서 쓰인다면, 같은 이름과 기능이라도 식별이 가능하기 때문에 이렇게 사용이 가능하다.
'코드의 모듈성을 향상시키고, 이름충돌을 방지하는 범위' 라고 정리하면 될거 같다.
'C++ > 탐구' 카테고리의 다른 글
A* Algorithm -3 (0) | 2024.04.01 |
---|---|
thread (0) | 2024.03.30 |
Lvalue? Rvalue? (0) | 2024.03.24 |
While (0) | 2024.03.20 |
Reference (0) | 2024.03.20 |