大家好,欢迎来到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