c++ 中 typeid, typeinfo, typeof


C++ 提供的 <typeinfo> 這個頭文件保存了一些類型,這些類型和 typeid, dynamic_cast 操作符相關。

1.  std::type_info 這個類型在  <typeinfo> 中定義。 typeid 操作符會返回一個該類型的 const 左值對象。但是這個 std::type_info 把拷貝構造函數設置成 private 的了,因此不能直接獲取 std::type_info 對象。 std::type_info 這個類型主要提供了 operator==, operator!= 運算符和name()方法,name()方法會返回一個指示該類型的字符串。可以看出來,這個typeid主要是為了對比兩個對象是否從屬於一個類。

typeid 的主要用法:

1 class Person;
2 Person Potter;
3 if (typeid(Person) == typeid(Potter))
4     cout << "Equal" << endl;

采用了 const 標識不影響類型,使用 typedef 定義的類型別名也不影響類型。

 2. typeof 和 typeid 不同,typeid 是 c++ 提供的,而 typeof 是編譯器提供的(一般指gcc)。有人說 typeof 和 C++11 提供的關鍵字 decltype 類似。

(未完待續。。。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM