일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- AI
- LG Aimers
- LLM
- 딥러닝
- regression
- ChatGPT
- 티스토리챌린지
- 회귀
- Classification
- GPT-4
- 지도학습
- 분류
- 머신러닝
- LG Aimers 4th
- LG
- gpt
- Machine Learning
- supervised learning
- PCA
- 해커톤
- 오블완
- OpenAI
- deep learning
Archives
- Today
- Total
SYDev
C++ Chapter 01-5 : 이름공간(namespace) (2) 본문
Using을 활용한 이름공간의 명시
이름공간 내부에 함수를 호출할 때마다 매번 "이름공간::"을 입력하기에는 효율성이 떨어진다. 이때 추가적인 선언을 하나 더해주면 문제가 해결된다.
다음 예제를 살펴보자.
#include <iostream>
namespace MySpace1
{
void MyFunc(void)
{
std::cout<<"It's my function!"<<std::endl;
std::cout<<"In namespace MySpace1!"<<std::endl;
}
}
int main(void)
{
using MySpace1::MyFunc;
MyFunc();
return 0;
}
It's my function!
In namespace MySpace1!
위 예제와 같이 특정 함수 내부에서 using을 선언한다면 그 효력은 선언한 함수 내부에서만 발휘된다. 전역에서 사용하고 싶다면 전역범수를 선언할 때와 같이 위치시켜주면 된다.
다음 예제를 살펴보자.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main(void)
{
int MyNum;
cout<<"Hello World!"<<endl;
cout<<"Enter Your Num : ";
cin>>MyNum;
cout<<"MyNum is "<<MyNum<<endl;
return 0;
}
Hello World!
Enter Your Num : 3
MyNum is 3
위 예제처럼 std 내부의 함수를 일일이 using으로 선언하는 것이 불편할 수 있다. 그럴 때는 std에 선언된 모든 것에 대해서 이름공간 지정을 생략할 수 있다.
다음 예제를 살펴보자.
#include <iostream>
using namespace std;
int main(void)
{
int MyNum;
cout<<"Hello World!"<<endl;
cout<<"Enter Your Num : ";
cin>>MyNum;
cout<<"MyNum is "<<MyNum<<endl;
return 0;
}
Hello World!
Enter Your Num : 3
MyNum is 3
위 예제의 방식을 사용하면 사용자가 좀 더 편해지긴 하지만 그만큼 이름충돌 발생 확률이 올라가기 때문에 적절하게 혼용해야 할 필요가 있다.
이름공간의 별칭 지정
이름공간이 과도하게 중첩되었을 때 별칭을 지정해서 접근할 수 있다.
다음 예제를 살펴보자.
#include <iostream>
using namespace std;
namespace AAA
{
namespace BBB
{
namespace CCC
{
int num1;
int num2;
}
}
}
int main(void)
{
AAA::BBB::CCC::num1=1;
AAA::BBB::CCC::num2=2;
namespace ABC=AAA::BBB::CCC;
cout<<ABC::num1<<endl;
cout<<ABC::num2<<endl;
return 0;
}
1
2
+범위지정 연산자의 또 다른 기능
지역변수와 전역변수의 이름이 같은 경우에 지역변수가 선언된 함수 내부에서 전역변수는 지역변수에 의해서 가려진다. 이때 전역변수에 접근하려면 변수 이름 앞에 범위지정 연산자를 붙이면 된다.
아래 예제를 살펴보자.
#include <iostream>
using namespace std;
int val=20;
int main(void)
{
int val=1;
cout<<"지역변수 : "<<val<<endl;
cout<<"전역변수 : "<<::val<<endl;
return 0;
}
지역변수 : 1
전역변수 : 20
출처 : 윤성우, <윤성우의 열혈 C++ 프로그래밍>, 오렌지미디어, 2010.05.12
'Programming Lang > C++' 카테고리의 다른 글
C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(2) (0) | 2023.07.06 |
---|---|
C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(1) (0) | 2023.07.05 |
C++ Chapter 01-5 : 이름공간(namespace) (1) (0) | 2023.07.05 |
C++ Chapter 01-4 : 인라인(inline) 함수 (0) | 2023.07.04 |
C++ Chapter 01-3 : 매개변수의 디폴트 값(Default Value) (0) | 2023.07.03 |