C++ typeid关键字详解

C++ typeid关键字详解文章详细介绍了 C 中的 typeid 运算符 用于获取表达式或数据类型的类型信息

大家好,欢迎来到IT知识分享网。

一、C++ typeid关键字详解

1、typeid的用法

typeid 运算符用来获取一个表达式的类型信息。类型信息对于编程语言非常重要,它描述了数据的各种属性:

注意:typeid是操作符,不是函数,这点与sizeof类似

2、 type_info类常用的成员函数

3、使用type_info

typeid 运算符经常被用来判断两个类型是否相等

3.1、基本类型的比较

int a = 20; double b = 30; bool flag = (typeid(a) == typeid(int)); cout << flag << endl; // 输出结果:1 flag = (typeid(a) == typeid(double)); cout << flag << endl; // 输出结果:0 flag = (typeid(b) == typeid(double)); cout << flag << endl; // 输出结果:1 

3.2、复杂类型的比较(基类不带虚函数)

class base { 
    public : void m(){ 
   cout<<"base"<<endl;} }; class derived : public base { 
    public: void m(){ 
   cout<<"derived"<<endl;} }; int main() { 
    base *p = new derived; bool flag = (typeid(p) == typeid(base*)); cout << flag << endl; // 输出结果:1 flag = (typeid(p) == typeid(derived*)); cout << flag << endl; // 输出结果:0 flag = (typeid(*p) == typeid(base)); cout << flag << endl; // 输出结果:1 flag = (typeid(*p) == typeid(derived)); cout << flag << endl; // 输出结果:0 return 0; } 

3.3、复杂类型的比较(基类带虚函数)

class base { 
    public : virtual void m(){ 
   cout<<"base"<<endl;} }; class derived : public base { 
    public: void m(){ 
   cout<<"derived"<<endl;} }; int main() { 
    base *p = new derived; bool flag = (typeid(p) == typeid(base*)); cout << flag << endl; // 输出结果:1 flag = (typeid(p) == typeid(derived*)); cout << flag << endl; // 输出结果:0 flag = (typeid(*p) == typeid(base)); cout << flag << endl; // 输出结果:0 flag = (typeid(*p) == typeid(derived)); cout << flag << endl; // 输出结果:1 return 0; } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116575.html

(0)
上一篇 2025-11-27 22:45
下一篇 2025-11-28 07:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信