std::bad_typeid

来自cppreference.com
< cpp‎ | types
 
 
 
类型的支持
基本类型
基础类型
定宽整数类型 (C++11)
数值极限
C 数值极限接口
运行时类型信息
bad_typeid
类型特性
类型类别
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型属性
(C++11)
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++17中过时)
(C++11)
类型特性常量
元函数
(C++17)
受支持操作
关系与属性查询
(C++11)
(C++11)
(C++11)
(C++11)
类型修改
(C++11)
(C++11)
(C++11)
类型变换
(C++11)
(C++11)
(C++17)
(C++11)(C++17中过时)
(C++17)
 
 
定义于头文件 <typeinfo>
class bad_typeid : public std::exception;

此类型的异常在应用 typeid 运算符到多态类型的空指针值时抛出。

cpp/error/exceptionstd-bad typeid-inheritance.svg
关于这幅图像

继承图

目录

[编辑] 成员函数

构造新的 bad_typeid 对象
(公开成员函数)

继承自 std::exception

成员函数

析构该异常对象
(std::exception 的虚公开成员函数) [编辑]
[虚]
返回一个说明字符串
原文:
returns an explanatory string
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

(std::exception 的虚公开成员函数) [编辑]

[编辑] 示例

#include <iostream>
#include <typeinfo>
 
struct S { // 类型必须是多态
    virtual void f();
}; 
 
int main()
{
    S* p = nullptr;
    try {
        std::cout << typeid(*p).name() << '\n';
    } catch(const std::bad_typeid& e) {
        std::cout << e.what() << '\n';
    }
}

输出:

Attempted a typeid of NULL pointer!