Wie funktionieren Charakterklassen?

57

Ich lese Scott Meyers Effektives C ++ . Er spricht über Merkmalsklassen, ich habe verstanden, dass ich sie brauche, um den Typ des Objekts während der Kompilierungszeit zu bestimmen, aber ich kann seine Erklärung darüber, was diese Klassen tatsächlich tun, nicht verstehen. (aus technischer Sicht)

    
rookie 20.10.2010, 15:50
quelle

2 Antworten

46

Vielleicht erwarten Sie eine Art Magie, die Typeigenschaften zum Funktionieren bringt. Sei in diesem Fall enttäuscht - es gibt keine Magie. Typeigenschaften sind manuell für jeden Typ definiert. Betrachten Sie zum Beispiel iterator_traits , das typedefs (z. B. value_type ) für Iteratoren bereitstellt.

Mit ihnen können Sie

schreiben %Vor%

Aber damit dies funktioniert, gibt es tatsächlich eine explizite Definition irgendwo im Header <iterator> , die etwa so lautet:

%Vor%

Dies ist eine teilweise Spezialisierung vom Typ iterator_traits für Typen der Form T* , d. h. Zeiger eines generischen Typs.

Im gleichen Sinne sind iterator_traits auf andere Iteratoren spezialisiert, z. typename vector<T>::iterator .

    
Konrad Rudolph 20.10.2010, 18:18
quelle
39

Traits-Klassen bestimmen nicht den Typ des Objekts. Stattdessen stellen sie zusätzliche Informationen zu einem Typ bereit, indem sie typedefs oder Konstanten im Merkmal definieren.

    
fredoverflow 20.10.2010 15:58
quelle

Tags und Links