[C++] 모호성(Ambiguity) _ Using
- Archive2/C&C++
- 2022. 1. 4.
반응형
*개인적인 공부 기록용으로 작성한 글 이기에 잘못된 내용을 포함하고 있을 수 있습니다.
모호성(Ambiquity)
-1 모호성(Ambiquity)
-2 using namespace 사용 시 유의점
-1 모호성(Ambiguity)
프로그래밍을 하다보면, 변수와 함수의 이름이 겹치는 경우가 발생할 수 있다. 객체지향 언어에서는 오버라이딩이나 오버로딩과 같이 동일한 이름의 함수를 사용하도록 권장하는 상황도 있다. 이 때 컴파일러는 어떠한 변수나 함수를 선택해야 할 지 모르는 모호성(Ambiguity)이 발생한다.
namespace a {
int var = 10;
}
namespace b {
int var = 10;
}
int main() {
cout << var << endl; // 모호성 발생
return 0;
}
이러한 모호성은 범위 지정 연산자(::)를 사용해 네임스페이스를 지정함으로써 해결할 수 있다.
#include <iostream>
using namespace std;
namespace a {
int var = 10;
}
namespace b {
int var = 10;
}
int main() {
cout << a::var << endl; // namespace a's var
cout << b::var << endl; // namespace b's var
return 0;
}
혹은 using 문법을 사용해 네임스페이스 공간을 선언해 줌으로써 모호성을 해결하는 방법도 있다.
#include <iostream>
using namespace std;
namespace a {
int var = 10;
}
namespace b {
int var = 10;
}
int main() {
using namespace a;
cout << var << endl;
return 0;
}
-2 using namespace 사용 시 유의점
단 using namespace를 헤더에 큰 영역으로 넣는것은 지양하고, cpp파일에 선언하는 것이 좋다.
그리고 되도록이면 "전역 사용"은 피하는것이 좋다.
반응형
'Archive2 > C&C++' 카테고리의 다른 글
[C/C++] C언어 방식 문자열 (C-Style-Strings) _ strlen strcpy strcat strcmp (0) | 2022.01.25 |
---|---|
[C/C++] Array 배열을 함수의 매개변수로 사용 시 주의점 (0) | 2022.01.06 |
[C++] 쉼표의 여러가지 기능 _ 콤마 연산자 (Comma Operator) 와 분리자 (Seperator) (0) | 2022.01.03 |
[C++] 상수 _ 리터럴 상수 (literal Constants ) & 심볼릭 상수 (Symbolic Constants) (0) | 2021.12.28 |
[C++ STL] string.replace() - 문자열 치환 함수 (0) | 2021.12.26 |