2015-12-18 53 views
1

計劃:這是什麼數字與我的typeid相關聯?

#include<iostream> 
#include<typeinfo> 
using namespace std; 

class Base 
{ 
     public:virtual void func(){} 
}; 

class Derived1 : public Base {}; 

int main() 
{ 
     Derived1 d; 
     cout<<typeid(d).name()<<endl; 
     return 0; 
} 

輸出:

8Derived1 

這個數字是什麼?

編譯器:克++ - 4.8.4-2ubuntu1〜14.04

+1

我不認爲答案,問題'8'代表名稱中的字符數。 –

+0

@ShafikYaghmour嗯,這可能是一個實現(返回它的大小+名稱),但它不能保證C++規範:「返回一個實現定義的以null結尾的包含類型名稱的字符串。 (...)「 –

+0

@DavidNogueira OP專門詢問gcc,如問題 –

回答

2

它是實現所定義,並且沒有固有的含義。檢查std::typeinfo::name() reference

返回一個實現定義的以NULL結尾的包含類型名稱的字符串。沒有給出任何保證,特別是返回的字符串對於幾種類型可以是相同的,並且在相同程序的調用之間改變。

+0

不知道它用於什麼?這個描述看起來很沒用。 – 4386427

+0

@StillLearning我會指出它可以被一些平臺鎖定的應用程序/庫知道它的實現使用,但是這個函數可能不應該被最終用戶使用。只是我2美分。 –

相關問題