我正在使用GCC,以下代码输出了一些意外的内容
#include <iostream>
#include <typeinfo>
using namespace std;
class B {
public:
B ( B * ptr) { cout<< typeid(*ptr).name()<<endl;}
};
class D : public B {
public:
D() : B(this) { cout<<typeid(this).name()<<endl;}
};
int main()
{
D d;
return 0;
}
输出:
1B
P1D
任何人都可以向我解释为什么基类不能正确地告诉派生类的类型? 非常感谢
答案 0 :(得分:3)
有两个原因:
*ptr
)尚未完全构建。答案 1 :(得分:0)
那件事真的取决于编译器。 msvc为此提供了不同的typeid字符串。