关于type_info与typeid
不同编译器的返回结果不同!更多请参见:
http://www.cppblog.com/smagle/archive/2010/05/14/115286.html
/*
* File: main.cpp
* Author: Vicky.H
* Email: eclipser@163.com
*/
#include <iostream>
#include <typeinfo>
class A {
};
void fun1() { // FvvE F 表示为function 第1个v表示函数返回void 第2个v表示参数为void E表示End 结束
std::cout << "function" << std::endl;
}
const A* fun2(int, double, const int*,const double&) {
return 0;
}
/*
*
*/
int main(void) {
// typeid(/**可以为类,结构体,公用体的类型,对象,指针,函数,函数指针,int,double等数据类型*/)
// 返回n 开始表示参数为类,结构体,公用体的类型或对象,如1A 4Base 表示A与Base为类,结构体或公用体
// 返回Pl 开始表示参数为类,结构体,公用体的指针对象
// 返回F 开始表示参数为函数,第二个返回值为函数的返回类型,之后参数为函数传递参数类型,E表示结束
// FPK1AidPKiRKdE F表示参数为函数,P为指针,R为引用,K为const,那么PK1A表示返回值为const A*,id表示函数参数为int,double,PKi表示参数为const int*,RKd表示参数为const double& E表示结束
// 那么函数为const A* f(int,double,const int*,const double&) {}
// 返回PF 开始表示参数为函数指针
std::cout << typeid(int).name() << std::endl;
std::cout << typeid(const int).name() << std::endl;
std::cout << typeid(const int&).name() << std::endl;
std::cout << typeid(double).name() << std::endl;
std::cout << typeid(const double).name() << std::endl;
std::cout << typeid(const double&).name() << std::endl;
std::cout << typeid(A).name() << std::endl;
std::cout << typeid(const A).name() << std::endl;
std::cout << typeid(const A&).name() << std::endl;
std::cout << "---------------------------" << std::endl;
A a;
std::cout << typeid (A).name() << std::endl;
std::cout << typeid (A).__is_function_p() << std::endl;
std::cout << typeid (A).__is_pointer_p() << std::endl;
std::cout << "---------------------------" << std::endl;
std::cout << typeid (a).name() << std::endl;
std::cout << typeid (a).__is_function_p() << std::endl;
std::cout << typeid (a).__is_pointer_p() << std::endl;
std::cout << "---------------------------" << std::endl;
std::cout << typeid (&a).name() << std::endl;
std::cout << typeid (&a).__is_function_p() << std::endl;
std::cout << typeid (&a).__is_pointer_p() << std::endl;
std::cout << "---------------------------" << std::endl;
std::cout << typeid (fun1).name() << std::endl;
std::cout << typeid (fun1).__is_function_p() << std::endl;
std::cout << typeid (fun1).__is_pointer_p() << std::endl;
std::cout << "---------------------------" << std::endl;
std::cout << typeid (fun2).name() << std::endl;
std::cout << typeid (fun2).__is_function_p() << std::endl;
std::cout << typeid (fun2).__is_pointer_p() << std::endl;
std::cout << "---------------------------" << std::endl;
std::cout << typeid (&fun2).name() << std::endl;
std::cout << typeid (&fun2).__is_function_p() << std::endl;
std::cout << typeid (&fun2).__is_pointer_p() << std::endl;
return 0;
}
i
i
i
d
d
d
1A
1A
1A
---------------------------
1A
0
0
---------------------------
1A
0
0
---------------------------
P1A
0
1
---------------------------
FvvE
1
0
---------------------------
FPK1AidPKiRKdE
1
0
---------------------------
PFPK1AidPKiRKdE
0
1
运行成功(总计时间: 78毫秒)
关于type_info与typeid相关推荐
- c++中获得对象类型 typeid 与 type_info
复杂部分略去,摘录要素如下: 1.typeid是C++的关键字之一,等同于sizeof这类的操作符. 2.typeid操作符的返回结果是名为type_info的标准库类型的对象的引用(在头文件type ...
- RTTI、dynamic_cast、typeid、虚函数表
一.RTTI RTTI(Run-Time Type Identification),通过运行时类型信息,程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型. Human* phu ...
- C++11 的 运行时类型识别type_info
一.type_info与typeid 类type_info保存关于类型的特定于实现的信息,包括类型的名称,以及比较两个类型是否相等或排序顺序的方法. 这是typeid操作符返回的类.具有如下特点: ( ...
- C++中typeid的使用
RTTI(Run-TimeType Information, 运行时类型信息),它提供了运行时确定对象类型的方法.在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid. ...
- c++ typeid和type_index
typeid 查询类型的信息. 用于必须知晓多态对象的动态类型的场合以及静态类型鉴别. 使用方法 头文件: #include<typeinfo> typeid(类型) 或者typeid(表 ...
- C++11 变量类型获取typeid
文章目录 1.typeid使用 1) 原型:const char* name() const; 2) 原型:bool before (const type_info& rhs) const; ...
- C++ 中的 typeid 运算符和示例
typeid是C++ 中的运算符. 它用于需要对象的动态类型或运行时类型信息的地方. 它包含在库中.因此,为了使用 typeid,这个库应该包含在程序中. typeid 表达式是一个左值表达式. 句法 ...
- typeinfo、typeid、 typeof 介绍
一.type_info类 该类type_info保存有关类型的特定于实现的信息,包括类型的名称以及比较两种类型是否相等或排序顺序的方式.这是typeid运算符返回的类. #ifndef _TYPEIN ...
- Th3.10:RTTI、dynamic_cast、typeid简介
本博客将记录:类的相关知识点的第10节的笔记! 今天 总结的这5个知识点都是之前我coding中接触得非常少的,因此务必要重视这一章! 今天总结的知识分为以下5个点: 一.RTTI是什么? 二.dy ...
最新文章
- LaTeX 简介与安装
- 《剑指offer》第十三题(机器人的运动范围)
- 借助numpy.rot90实现图片顺时针旋转90°,旋转后图片没有黑边
- 图片任意放大缩小 插件
- 甘肃政法学院计算机科学与技术试题,甘肃政法学院计算机科学与技术专业课程教学大纲.doc...
- java中servlet知识_jsp_Servlet常用知识总结
- 小话设计模式四:策略模式
- Pandas set_indexreset_index
- 半监督主动式机器学习的技术优势:银行金融风控场景分析
- PostgreSQL自动增量
- 【逗老师带你学IT】PRTG、Zabbix通过API监控深信服VDC和VMP云桌面运行状态
- Java中常用的几个操作redies的方法。
- 机器学习之多种算法优缺点总结及优化方法
- 计算机科学美国大学专业,2015年U.S.NEWS计算机科学专业美国大学排名
- 你一定要掌握的三条IT运维面试技巧
- 【声源定位】语音信号
- unity——三维GIS效果
- java队列处理高并发_Java高并发--消息队列
- JavaScript基础之一JavaScript的邂逅
- 用turtle库绘制小猪佩奇