typedef 和typeid

在C++编程中,typedeftypeid是两个完全不同的概念,分别用于不同的目的。

typedef

typedef 关键字用于为现有的数据类型创建新的名字。这常用于简化复杂的类型声明,或者为特定类型创建更具描述性的别名。typedef 并不创建新的类型,只是为现有的类型定义了一个新的名称。

示例:

typedef unsigned long ulong;  
typedef std::vector<int> IntVector;  
  
ulong number = 12345;  
IntVector vec = {1, 2, 3, 4, 5};

在这个例子中,ulong 是 unsigned long 的别名,IntVector 是 std::vector<int> 的别名。

typeid

typeid 关键字用于在运行时获取一个对象的类型信息。它返回一个 std::type_info 对象,该对象包含有关类型的信息。typeid 通常与 typeof 关键字一起使用,以便在编译时获取类型信息,但 typeid 是在运行时工作的。

示例:

#include <iostream>  
#include <typeinfo>  
  
class Base { };  
class Derived : public Base { };  
  
int main() {  
    Base* basePtr = new Derived();  
    std::cout << "The type of basePtr is: " << typeid(*basePtr).name() << std::endl;  
    delete basePtr;  
    return 0;  
}

在这个例子中,typeid(*basePtr).name() 将返回 basePtr 指向的对象的实际类型名,即使 basePtr 的静态类型是 Base*

总结

  • typedef 用于在编译时创建类型的别名。
  • typeid 用于在运行时获取对象的类型信息。

这两个特性分别在不同的上下文中非常有用,但不应混淆它们的用途和工作方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值