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_code
typeinfo 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin