c语言typeid的用法,‘typeid’对’typeof’在C
我想知道typeid和typeof之间的区别是C。这是我知道的:
> typeid在type_info的文档中提到,它在C头文件typeinfo中定义。
> typeof在C的GCC扩展中和在C Boost库中定义。
另外,这里是我创建的测试代码测试,我发现typeid不返回我的预期。为什么?
main.cpp
#include
#include //for 'typeid' to work
class Person {
public:
// ... Person members ...
virtual ~Person() {}
};
class Employee : public Person {
// ... Employee members ...
};
int main () {
Person person;
Employee employee;
Person *ptr = &employee;
int t = 3;
std::cout << typeid(t).name() << std::endl;
std::cout << typeid(person).name() << std::endl; // Person (statically known at compile-time)
std::cout << typeid(employee).name() << std::endl; // Employee (statically known at compile-time)
std::cout << typeid(ptr).name() << std::endl; // Person * (statically known at compile-time)
std::cout << typeid(*ptr).name() << std::endl; // Employee (looked up dynamically at run-time
// because it is the dereference of a pointer
// to a polymorphic class)
}
输出:
bash-3.2$ g++ -Wall main.cpp -o main
bash-3.2$ ./main
i
6Person
8Employee
P6Person
8Employee
c语言typeid的用法,‘typeid’对’typeof’在C相关推荐
- java 泛化_Java语言class类用法及泛化(详解)
这篇文章主要介绍了Java语言class类用法及泛化(详解),大家都知道Java程序在运行过程中,对所有的对象进行类型标识,也就是RTTI.这项信息记录了每个对象所属的类.虚拟机通常使用运行时类型信息 ...
- Go语言MD5加密用法实例
Go语言MD5加密用法实例 本文实例讲述了Go语言MD5加密用法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: import ( "crypto/md5" ...
- C语言atoi()函数用法
C语言atoi()函数用法 头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * s ...
- 6s在c语言中的用法,C语言中assert的用法讲解
assert是指编写代码时做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式.下面是小编为大家整理的C语言assert的用法讲解,欢迎参考~ assert宏的原型定 ...
- ASP脚本语言之vbscript用法
常用的脚本语言有 Javascript 和 VBscript . 使用哪种语言需先设定.如上节代码中的<%@ LANGUAGE="JSCRIPT" ... %> ...
- C 语言do with,中考英语易错题十七、语言交际的用法
十七.语言交际的用法 [中考链接] -Do you mind if I record your lecture? -__________. Go ahead. A. Never mind B. No ...
- fclose在c语言中的作用,c语言fcloseall函数用法实例介绍
c语言fcloseall函数用法实例介绍.fcloseall函数的返回值,函数 fcloseall() 将所有打开的流与其底层的文件或功能集合关闭.任何缓冲的数据都将首先被写入,使用 fflush(3 ...
- C语言 qsort的用法 模拟EXCEL排序
C语言 qsort的用法 模拟EXCEL排序 题目 Excel可以对一组记录按任意指定列排序.现请编写程序实现类似的功能. 输入 输入的第一行包含两个正整数N(<= 10^5)和C,其中N是记录 ...
- c语言关于break的程序,c语言break的用法
小编为大家整理了c语言break的用法.希望对你有帮助哦! 一.程序源代码: #include void main() { char letter; printf("please input ...
最新文章
- 快速构建Spring Cloud工程
- mysql修改字段为现在时间_mysql如何修改字段自动生成时间
- 留恋 nyoj 854
- Win7安装OnlyOffice(不使用Docker)
- JQuery--事件
- php和js序列化,PHP中serialize和json序列化与反序列化的区别
- Exception from HRESULT: 0x800A03EC
- linux mount 默认读写,Linux mount 修改文件系统的读写属性
- tensorflow精进之路(二十一)——使用slim模型对图像识别与检测(上)(Inception_ResNet_v2模型)
- linux 创建用户_用 Bash 脚本发送新用户帐户创建的邮件 | Linux 中国
- 银联证书下载及导出流程
- IAR移植FreeRTOS
- 单片机应用系统设计技术——单片机出租车计费器
- 20款常用的商业智能(BI)工具分享(最新)
- html下载链接引入element-ui
- 阿里云盘 Mac客户端(附mac/win版)v2.1.6中文内测版
- 通过Windows批处理脚本批量修改DNS
- 说出至少4种vue当中的指令和它的用法?
- XAF 与 CIIP
- golang gorilla websocket例子