tôi đã sử dụng typeid
để có được các tên kiểu của std :: vector :: size_type và một số không nhỏ lớp A với đoạn mã sau (cppreference):đầu ra Strange của std :: typeid :: name()
#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;
};
và tôi nhận này là đầu ra:
m
1A
tôi đoán rằng "1" trước khi "A" là kết quả của cơ sở rỗng Lớp Tối ưu hóa, nhưng những gì "m" đứng cho và là này bình thường không?
Tôi đang sử dụng phiên bản gcc sau: g ++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
Các tên được trả về bởi 'type_info :: name' được thực hiện xác định. Gcc đã chọn 'm' cho' size_type'. Beats me :) – jrok
@jrok ah, được rồi. :) – tmaric
Bạn có thể muốn kiểm tra một tham chiếu trên hàm ['std :: type_info :: name'] (http://en.cppreference.com/w/cpp/types/type_info/name). –