Program Language/C & C++

[C++] 별칭

야곰야곰+책벌레 2021. 12. 16. 17:09
728x90
반응형

때로는 유형에 대한 새로운 이름이 필요하다. 이유는 다음과 같다.

  • 원래 이름이 너무 길거나 복잡하거나 보기 흉할 때 (프로그래머의 취향)
  • 프로그래밍 기술은 Context에서 동일한 이름을 가진 다른 유형을 요구하기도 한다.
  • 특정 유형은 유지 관리를 단순화하기 위해 한 곳에서만 언급된다.
using Pchar = char∗; // pointer to character
using PF = int(∗)(double); // pointer to function taking a double and returning an int

유사한 유형은 멤버 별칭과 동일한 이름을 정의할 수 있다.

template<class T>
class vector {
    using value_type = T; // every container has a value_type
    // ...
};
template<class T>
class list {
    using value_type = T; // every container has a value_type
    // ...
};

좋고 나쁨의 경우, 유형 별칭은 고유한 유형이 아닌 다른 유형에 대한 동의이다. 즉, 별칭은 별칭인 유형을 나타낸다.

Pchar p1 = nullptr; // p1 is a char*
char∗ p3 = p1; // fine

동일한 의미 또는 동일한 표현을 가진 고유한 유형을 원하는 사람들은 열거 및 클래스를 살펴봐야 한다. 키워드 typedef를 사용하고 선언되는 이름을 변수 선언의 위치에 배치하는 이전 구문은 많은 context에서 동등하게 사용할 수 있다.

typedef int int32_t; // equivalent to ‘‘using int32_t = int;’’
typedef short int16_t; // equivalent to ‘‘using int16_t = short;’’
typedef void(∗PtoF)(int); // equivalent to ‘‘using PtoF = void(*)(int);’’

별칭은 기본 머신의 세부 정보로부터 코드를 격리하려는 경우에 사용된다. int32_t라는 이름은 32bit 정수를 나타내기를 원한다는 것을 나타낸다. '일반 int'가 아닌 'int32_t'로 코드를 작성하면 다음과 같이 sizeof(int)==2인 머신으로 코드를 이식할 수 있다. 더 긴 정수를 사용하도록 코드에서 int32_t의 단일 발생을 재정의 한다.

using int32_t = long;

_t 접미사는 별칭("typedef")에 대해 일반적이다. int16_t, int32_t 및 기타 별칭은 <stdint>에서 찾을 수 있다. 목적보다는 표현에 따라 유형을 명명하는 것이 반드시 좋은 생각은 아니다. using 키워드를 사용하여 템플릿 별칭을 도입할 수도 있다.

template<typename T>
using Vector = std::vector<T, My_allocator<T>>;

unsigned와 같은 유형 지정자를 별칭에 적용할 수 없다.

using Char = char;
using Uchar = unsigned Char; // error
using Uchar = unsigned char; // OK

 

728x90
반응형

'Program Language > C & C++' 카테고리의 다른 글

[C++] Pointer & const  (0) 2021.12.29
[C++] 포인터(Pointer)  (0) 2021.12.23
[C++] 객체와 값  (0) 2021.12.16
[C++] decltype 지정자  (0) 2021.12.16
[C++] auto 지정자  (0) 2021.12.16