std :: typeid :: name()的奇怪输出

时间:2013-05-06 10:01:51

标签: c++ typeinfo

我使用typeid来获取std :: vector :: size_type的类型名称和一个零大小的类A,其代码如下(cppreference):

#include<iostream>
#include <vector>
#include <typeinfo>

using namespace std;

class A {};

int main()
{
    vector<int> v(10); 

    vector<int>::size_type s = v.size(); 

    A a; 

    cout << typeid(s).name() << endl;
    cout << typeid(a).name() << endl;

};

我得到了这个输出:

m
1A

我想那是&#34; 1&#34;之前&#34; A&#34;是空基类优化的结果,但是&#34; m&#34;代表,这是正常的吗?

我使用的是以下gcc版本:g ++(Ubuntu 4.4.3-4ubuntu5.1)4.4.3

1 个答案:

答案 0 :(得分:12)

G ++使用实现定义的类型命名,但它也提供了实用程序c++filt,使它们具有人类可读性:

$ ./test | c++filt -t
unsigned long
A