c++ typeid

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

阅读 1.9k
2 个回答

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题