code

특성 클래스는 어떻게 작동하며 어떤 역할을합니까?

codestyles 2020. 11. 28. 09:30
반응형

특성 클래스는 어떻게 작동하며 어떤 역할을합니까?


Scott Meyers의 Effective C ++을 읽고 있습니다. 그는 특성 클래스에 대해 이야기하고 있습니다. 컴파일 시간 동안 객체의 유형을 결정하는 데 필요하다는 것을 이해했지만 이러한 클래스가 실제로 수행하는 작업에 대한 설명을 이해할 수 없습니다. (기술적 인 관점에서)


아마도 유형 특성을 작동시키는 일종의 마법을 기대하고 계실 것입니다. 이 경우 실망하십시오. 마법은 없습니다. 유형 특성은 각 유형에 대해 수동으로 정의됩니다. 예를 들어, 반복자에 iterator_traits대한 typedef (예 :)를 제공하는을 고려하십시오 value_type.

그것들을 사용하면 다음과 같이 쓸 수 있습니다.

iterator_traits<vector<int>::iterator>::value_type x;
iterator_traits<int*>::value_type y;
// `x` and `y` have type int.

그러나이 작업을 수행하기 위해 실제로 헤더 어딘가에 다음과 같은 명시 적 정의가 있습니다<iterator> .

template <typename T>
struct iterator_traits<T*> {
    typedef T value_type;
    // …
};

이것은 형식의 유형 , 즉 일부 일반 유형의 포인터에 대한 유형의 부분적인 특수화 입니다 .iterator_traitsT*

같은 맥락에서 iterator_traits다른 반복자 (예 : typename vector<T>::iterator.


특성 클래스는 개체의 유형을 결정 하지 않습니다 . 대신 일반적으로 트레이 트 내부에 typedef 또는 상수를 정의하여 유형에 대한 추가 정보를 제공합니다.

참고 URL : https://stackoverflow.com/questions/3979766/how-do-traits-classes-work-and-what-do-they-do

반응형