-->

的std :: typeid的::名字奇怪的输出()(Strange output of std::

2019-09-02 01:35发布

我用typeid获得的std ::矢量:: 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

我想,“1”,“A”之前是空基类优化的结果,但什么是“M”代表和这正常吗?

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

Answer 1:

G ++采用实现定义命名的类型,但它也提供了实用c++filt ,以使他们的人类可读的:

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


文章来源: Strange output of std::typeid::name()
标签: c++ typeinfo