Modern C++의 using은 typedef의 완벽한 상위호환인데, 왜 그런지 살펴보자.
typedef void(*MyFunc)();
using MyFunc = Void(*)();
우선 가독성이 좋다. 위는 매개변수를 받지 않고 void형의 함수 포인터를 선언한 것인데,
typedef는 함수타입 사이에 함수명이 껴서 굉장히 불편하다.
하지만 using은 함수명과 타입을 완전히 분리시켜 보기 편하다.
이것은 제쳐두고라도 using을 사용하기 좋은 상황은 템플릿을 사용할 때이다.
template<typename T>
struct Vector
{
typedef std::vector<T> type;
}
template<typename T>
using Vector = std::vector<T>;
typedef는 템플릿을 지원하지 않기 때문에 위처럼 구조체를 만들고 그 안에 type을 만들어서.. 아무튼 복잡하다.
하지만 하지만 using은 깔끔하게 한 줄로 정리가 된다. using은 typedef보다 모자란 점도 없고 그래서 using을 쓰자.
'C++' 카테고리의 다른 글
| [C++] 사용하지 않는 함수 삭제하기 (0) | 2022.06.25 |
|---|---|
| [C++] enum vs enum class (0) | 2022.06.25 |
| [C++] NULL은 int고 nullptr은 포인터다. (0) | 2022.06.25 |
| [C++] auto (0) | 2022.06.25 |
| [C++] algorithm 헤더의 remove, remove_if 주의점 (0) | 2022.06.24 |