Aracılığıyla paylaş


type_info Sınıfı

type_info sınıfı, derleyici tarafından program içinde oluşturulan tür bilgilerini açıklar. Bu sınıfın nesneleri, tür için bir ada etkili şekilde bir işaretçi depolar. type_info sınıfı, eşitlik veya harmanlama sırası için iki türü karşılaştırmak için uygun kodlanmış bir değer de depolar. Türler için kodlama kurallarını ve harmanlama sırası belirsizdir ve programdan programa farklılık gösterebilir.

<typeinfo> type_info sınıfını kullanabilmek için üst bilgi dosyasının eklenmesi gerekir. type_info sınıfının arabirimi:

class type_info {
public:
    type_info(const type_info& rhs) = delete; // cannot be copied
    virtual ~type_info();
    size_t hash_code() const;
    _CRTIMP_PURE bool operator==(const type_info& rhs) const;
    type_info& operator=(const type_info& rhs) = delete; // cannot be copied
    _CRTIMP_PURE bool operator!=(const type_info& rhs) const;
    _CRTIMP_PURE int before(const type_info& rhs) const;
    size_t hash_code() const noexcept;
    _CRTIMP_PURE const char* name() const;
    _CRTIMP_PURE const char* raw_name() const;
};

Sınıfın yalnızca bir özel kopya oluşturucusu olduğundan, doğrudan type_info sınıfının nesnelerinin örneğini oluşturamazsınız. Bir (geçici) type_info nesnesi oluşturmanın tek yolu typeid işlecini kullanmaktır. Atama işleci de özel olduğundan, sınıf type_info nesnelerini kopyalayamaz veya atayamazsınız.

type_info::hash_codetypeinfo türünde değerleri dizin değerlerinin dağılımına eşlemek için uygun bir karma işlevi tanımlar.

ve işleçleri ==!= , sırasıyla diğer type_info nesneleriyle eşitlik ve eşitsizlik açısından karşılaştırmak için kullanılabilir.

Türlerin ve devralma ilişkilerinin harmanlama sırası arasında bir bağlantı yoktur. Türlerin type_info::before harmanlama sırasını belirlemek için üye işlevini kullanın. Farklı programlarda ve hatta aynı programın farklı çalıştırmalarında aynı sonucu verecek bir garanti type_info::before yoktur. Bu şekilde, type_info::before işlecin adresi (&) ile benzerdir.

type_info::name Üye işlevi, türün insan tarafından okunabilir adını temsil eden null olarak sonlandırılan bir dizeye döndürürconst char*. İşaret edilen bellek önbelleğe alınır ve hiçbir zaman doğrudan kaldırılmamalıdır.

Üye işlevi Microsoft'a type_info::raw_name özgüdür. Nesne türünün süslü adını temsil eden null ile sonlandırılan bir dizeye döndürür const char* . Ad, alandan tasarruf etmek için dekore edilmiş biçiminde depolanır. Sonuç olarak, bu işlev adın dekorasyonunu kaldırması gerekmediğinden daha type_info::name hızlıdır. İşlev tarafından type_info::raw_name döndürülen dize karşılaştırma işlemlerinde yararlıdır ancak okunabilir değildir. İnsan tarafından okunabilen bir dizeye ihtiyacınız varsa kullanın type_info::name .

Çok biçimli sınıflar için tür bilgileri yalnızca /GR (Çalışma Zamanı Tür Bilgilerini Etkinleştir) derleyici seçeneği belirtilmişse oluşturulur.

Ayrıca bkz.

Çalışma Zamanı Tür Bilgileri