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
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
cout<<typeid(a).name();//这里输出是A,为啥不是B
这里输出不是A ,而是 A* 。
只有用在多态类对象上的时候,才会返回 most derived class type。
在指针上没有这个行为。
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
当typeid操作符的操作数是带有虚函数的类类型时,typeid操作符会指出底层对象的类型,而不是操作数的类型。