' e karşı 'sattığınız' C typeid '
Fark nedir typeid
ve C typeof
arasında merak ediyorum . İşte öğrendiklerim:
typeid
C başlık dosyası typeinfo tanımlanan type_info belgelerinde belirtilir.typeof
C Boost kütüphanede C için GCC uzantısı ve tanımlanmıştır.
Ayrıca, burada typeid
beklediğim gibi değil geri keşfettim nerede yarattığım test kodu test. Herkes neden bana söyleyebilir misiniz?
main.cpp
#include <iostream>
#include <typeinfo> //for 'typeid' to work
class Person {
public:
// ... Person members ...
virtual ~Person() {}
};
class Employee : public Person {
// ... Employee members ...
};
int main () {
Person person;
Employee employee;
Person *ptr = &employee;
int t = 3;
std::cout << typeid(t).name() << std::endl;
std::cout << typeid(person).name() << std::endl; // Person (statically known at compile-time)
std::cout << typeid(employee).name() << std::endl; // Employee (statically known at compile-time)
std::cout << typeid(ptr).name() << std::endl; // Person * (statically known at compile-time)
std::cout << typeid(*ptr).name() << std::endl; // Employee (looked up dynamically at run-time
// because it is the dereference of a pointer
// to a polymorphic class)
}
çıkış:
bash-3.2$ g -Wall main.cpp -o main
bash-3.2$ ./main
i
6Person
8Employee
P6Person
8Employee
CEVAP
C dili typeof
diye bir şey vardır. Derleyici özgü bazı uzantısı bakıyor olmalısınız. Eğer GCC typeof
, sonra söz ediyorsanız benzer bir özellik anahtar kelimeler decltype
auto
C 11 mevcut. Tekrar C typeof
böyle bir kelime vardır.
typeid
çalışma zamanında tür kimlik bilgileri verir, C dili bir operatör. Buna benzer eşitlik type_info
diğer nesneler ile olan temelde type_info
bir nesne döndürür.
Unutmayın, sadece tanımlanan özelliğin döndü type_info
nesne vardır, var olma, eşitlik - eşitlik-karşılaştırılabilir, yani type_info
nesneleri tanımlayan farklı olacaktır karşılaştırmak olmayan eşit süre type_info
nesneleri anlatan aynı tür olması karşılaştırın eşit. Her şey uygulama tanımlı. Yöntem bu dönüş farklı "isimleri" bir şey okunabilir, ve hiçbir şey geri dönüş için garanti bile değil iade garantisi yoktur.
Not ayrıca, bu yukarıda muhtemelen anlamına gelir (her ne kadar standart gibi görünmüyor bile açıkça) ardışık uygulamalar typeid
aynı tip döndürebilir farklı type_info
nesneleri (tabii, yine de karşılaştırmak eşit).
Mac kullanıcı ve alma UYARI: LibXML sü...
Kod yürütme hızı: ASP.NET-MVC karşı PH...
İmzalı karşı İşaretsiz Tamsayı...
sattığınız nedir (c) 1) C...
Python programlama sekmeleri karşı ala...