class foo
{
public:
void say_type_name()
{
std::cout << typeid(this).name() << std::endl;
}
};
int main()
{
foo f;;
f.say_type_name();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在我的ubuntu机器上用g ++ 打印P3foo.我不知道它为什么打印P3foo而不仅仅是foo.如果我改变代码就好
std::cout << typeid(*this).name() << std::endl;
Run Code Online (Sandbox Code Playgroud)
它打印3foo.
有什么想法吗?