类型身份证 · RTTI
#include <iostream>
#include <typeinfo>
class Animal
{
public:
virtual ~Animal() = default;
virtual void speak() = 0;
};
class Dog : public Animal
{
public:
void speak() override { std::cout << "Woof!" << std::endl; }
};
class Cat : public Animal
{
public:
void speak() override { std::cout << "Meow!" << std::endl; }
};
int main()
{
// 基本类型
int x = 42;
std::cout << "Type of x: " << typeid(x).name() << std::endl;
std::cout << "Type of 3.14: " << typeid(3.14).name() << std::endl;
// 类类型
Dog dog;
Cat cat;
std::cout << "Type of dog: " << typeid(dog).name() << std::endl;
std::cout << "Type of cat: " << typeid(cat).name() << std::endl;
// 多态类型(通过基类指针)
Animal* animal = &dog;
std::cout << "Type of *animal: " << typeid(*animal).name() << std::endl;
animal = &cat;
std::cout << "Type of *animal: " << typeid(*animal).name() << std::endl;
return 0;
}特性
用途
性能
Last updated