问答

c++ typeid

作者:admin 2021-06-07 我要评论

class A {public: virtual void say() { cout "A" endl; }};class B:public A { }; A* a = new B(); couttypeid(a).name();//这里输出是A,为啥不是B IDE用的是V...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
class A {
public:
    virtual void say() {
        cout << "A" << endl;
    }
};
class B:public A {
 
};
 A* a = new B();
 cout<<typeid(a).name();//这里输出是A,为啥不是B

IDE用的是VS2019

###

当typeid操作符的操作数是带有虚函数的类类型时,typeid操作符会指出底层对象的类型,而不是操作数的类型。

###
 cout<<typeid(a).name();//这里输出是A,为啥不是B

这里输出不是A ,而是 A* 。

只有用在多态类对象上的时候,才会返回 most derived class type。
在指针上没有这个行为。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • c++ typeid

    c++ typeid

  • thinkphp6 多级控制器报错

    thinkphp6 多级控制器报错

  • tkinter想实现动态图出现问题

    tkinter想实现动态图出现问题

  • vue webpack 如何只在开发时加载组件?

    vue webpack 如何只在开发时加载组件?

腾讯云代理商
海外云服务器