c++ typeid使用

今天用了下c++ typeid这个操作符记录一下:

class parent
{
void getdata()
{}
// virtual void deal()
// {}
};
class son:public parent
{

};

int main()
{
parent *pa =new son(); //pointer
son data;
parent& ref =data; //refer

std::cout<<typeid(parent *).name()<<std::endl;
std::cout<<typeid(son *).name()<<std::endl;
 std::cout<<typeid(ref).name()<<std::endl;

std::cout<<(typeid(parent*)==typeid(pa))<<std::endl;
std::cout<<(typeid(ref)==typeid(parent))<<std::endl;

 std::cout<<(typeid(*pa)==typeid(parent))<<std::endl;

std::cout<<(typeid(void*)==typeid(pa))<<std::endl;
return 0;

}

  1. 当父类中不包含虚函数时结果:
    P6parent
    P3son
    6parent
    1
    1
    1
    0

  2. 当父类中包含虚函数时(取消注释) 执行结果:
    P6parent
    P3son
    3son
    1
    0
    0
    0

说明当在含有虚函数类继承关系中,可以使用指针来判断类型,使用值类型和引用类型,会typeid会返回子类的具体类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值