是使用typeid运算符。它可以获取一个变量的类型信息,并将其作为一个type_info对象返回。
#include <typeinfo> int main() { int a = 10; double b = 3.14; std::cout << typeid(a).name() << std::endl; std::cout << typeid(b).name() << std::endl; return 0; }
上面的代码中,typeid运算符用于查看a和b的类型,它们分别是int和double。
如果要查看一个指针变量的类型,可以使用typeid运算符,但是要注意,typeid运算符返回的是指针指向的对象的类型,而不是指针本身的类型。
#include <typeinfo> int main() { int a = 10; int *p = &a; std::cout << typeid(p).name() << std::endl; std::cout << typeid(*p).name() << std::endl; return 0; }
上面的代码中,typeid运算符用于查看p的类型,它是一个指向int类型的指针;而typeid(*p)运算符用于查看指针指向的变量的类型,它是一个int类型的变量。
如果要查看一个对象的类型,可以使用dynamic_cast运算符,它可以检查一个对象是否是某个指定的类型,如果是,则返回该对象的指针,否则返回nullptr。
#include <typeinfo> class Base { public: virtual void func() {} }; class Derived : public Base { public: virtual void func() {} }; int main() { Base *p = new Derived; if (dynamic_cast<Derived*>(p)) { std::cout << "p is a Derived object" << std::endl; } else { std::cout << "p is not a Derived object" << std::endl; } return 0; }
上面的代码中,dynamic_cast运算符用于检查p是否是Derived类型的对象,如果是,则输出“p is a Derived object”,否则输出“p is not a Derived object”。
C++中查看变量类型的方法有三种:使用typeid运算符查看变量的类型,使用typeid运算符查看指针指向的变量的类型,以及使用dynamic_cast运算符检查一个对象是否是某个指定的类型。
本文链接:http://task.lmcjl.com/news/12180.html