using
using 타입 별칭은 C++11 이후에 추가된 키워드이다.이전에는 타입 별칭을 typedef을 사용하여 구현해야 했다.
using이 도입된 이후부터는, 공식적으로 using을 사용하는 것을 권장하고 있다.
(다만, 이전에 만든 typedef를 굳이 바꾸면서까지 사용할 필요는 없다)
사용방법은 다음과 같다.
(int a = 0과 같이, 대입 연산자를 사용하는게 보기 편하다 보니, using이 더 사용하기 편한 것 같다)
using int32 = __int32;
typedef __int32 int32
함수 포인터도 선언이 가능하다.
using FuncPtr = int (*)(char, double);
typedef int (*FuncPtr)(char, double);
using namespace
C++을 사용하면 using namespace std 를 써 봤을 것이다.
이 뜻은, 컴파일러에 std라는 namespace안의 모든 것을 사용하겠다 라고 말하는 것으로, 범위 지정자를 생략하고 사용해도 된다. (ex. std::cout, std::cin)
또한, 다른 namespace에 중복되는 이름이 있더라도 지정하여 사용하지 않으면, 기본적으로 using namespace를 한 이름이 우선이다.
(다른 namespace는 using을 안했다는 가정)
namepsace를 가져올 때 다른 using namespace에 이름이 중복되는 경우가 발생할 수 있으므로 조심해야 한다.
using namespace ABC
namespace ABC
{
void Print() { std::cout << "Hello!" << "\n"; }
}
// ABC::Print();
Print();
template 사용
typedef과 using의 차이는 템플릿으로도 확인할 수 있다.
typedef은 템플릿에서 바로 사용하지 못하고, 구조체로 한 번 감싼 후 선언해야 하고, 사용할 때에도 번거롭다.
template<typename T>
struct List2
{
typedef list<T> type;
};
List2<int>::type li2;
li2.push_back(1);
li2.push_back(2);
반면, using의 경우에는 template과 호환되기 때문에 기존에 사용하던 방식대로 사용할 수 있다.
template<typename T>
using List = list<T>;
List<int> li;
li.push_back(1);
li.push_back(2);
이렇게 다양한 사용법 덕분에 using 키워드는 C++에서 매우 유용한 도구로 작용한다.
코드의 가독성을 높이고 중복을 줄일 수 있다.
'📕Programming > 📝C/C++' 카테고리의 다른 글
| [C / C++] delete (삭제된 함수) (0) | 2023.12.01 |
|---|---|
| [C / C++] enum class (0) | 2023.11.29 |
| [C / C++] auto (0) | 2023.11.28 |
| [C / C++] algorithm 라이브러리 (0) | 2023.11.24 |
| [C / C++] 함수 포인터, 함수 객체, 람다 표현식 (0) | 2023.10.24 |