在C++中查看变量类型的方法

是使用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

展开阅读全文