📜  c++ typeid 获取类型名称 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:51.633000             🧑  作者: Mango

C++中使用typeid获取类型名称

在C++中,可以使用typeid操作符获取一个表达式的类型信息。而使用typeid操作符的type_info类型的成员函数name()可以返回类型的名称字符串。

以下是typeid的使用示例:

#include <iostream>
#include <typeinfo>

int main() {
    int a = 10;
    std::cout << typeid(a).name() << std::endl;  // 输出 "int"
    return 0;
}

在上述示例中,我们使用typeid操作符获取了变量a的类型信息,并使用type_info类型的成员函数name()获取其名称字符串。

需要注意的是,typeid操作符返回的类型信息是在编译期间确定的,而不是运行期间。因此,如果使用typeid操作符获取一个对象的类型信息,则该对象的类型必须是完整的、已定义的类型。

以下是一个更为复杂的示例,展示了typeid操作符在多态中的使用:

#include <iostream>
#include <typeinfo>

class Base {
public:
    virtual void print() {
        std::cout << "This is Base" << std::endl;
    }
};

class Derived : public Base {
public:
    virtual void print() {
        std::cout << "This is Derived" << std::endl;
    }
};

int main() {
    Base* b_ptr = new Derived();
    std::cout << typeid(*b_ptr).name() << std::endl;  // 输出 "class Derived"
    return 0;
}

在上述示例中,我们定义了一个基类Base和一个派生类Derived。我们首先使用基类指针指向派生类对象,并使用typeid操作符获取了该对象的实际类型信息。需要注意的是,此时需要在该对象名字前加上*,表示获取指针所指向对象的类型信息。

至此,我们已经介绍了在C++中使用typeid操作符获取类型名称的方法。该方法在C++语言中的多态等方面有广泛的应用。