91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中如何使用 typename

發布時間:2021-07-19 16:21:35 來源:億速云 閱讀:250 作者:Leah 欄目:編程語言

本篇文章為大家展示了C++中如何使用 typename,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

問題是,T只是一個類型參數,編譯器并不能確切的知道T中有哪些成員。因此,對于編譯器來說,更為合理的做法把SubType看成了一個T中的靜態成員,從而把上面的代碼理解為T中的靜態成員SubType乘上ptr。(我想,這與編譯器在模板實例化時的處理方式有關。我不知道編譯器在實例化模板的時候會按什么步驟走,但是肯定和普通的類實例化完全不一樣。因為按照正常的類的實例化過程,編譯器完全應該能知道SubType是T中的一個嵌套類。希望書中后面的內容能提供解釋)。

這個時候C++ typename就能夠明確的告訴編譯器,SubType是一個類型,需要按照類型的方式處理。

下面是書中的一個實例:

#include < iostream> #include < vector> template< typename T> void printcoll(T const& coll)  {  typename T::const_iterator pos;  typename T::const_iterator end(coll.end());  for(pos = coll.begin(); pos != end; ++pos)  {  std::cout< < *pos< < ' ';  }  std::cout< < std::endl;  }  int _tmain(int argc, _TCHAR* argv[])  {  // 測試printcoll  std::vector< int> intVector;  intVector.push_back(1);  intVector.push_back(2);  intVector.push_back(3);  intVector.push_back(4);  printcoll(intVector);  return 0;  }

注意到第7行和第8行,在定義變量的時候迭代器const_iterator是容器T中的一個類型。因此,在定義T::const_iterator的變量的時候需要在前面加上typename。可以說,正是由于const_iterator是一個依賴于模板參數的類型,所以我們必須使用C++ typename明確的指它是一個類型。否則,編譯器就不能正常識別。

上述內容就是C++中如何使用 typename,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宣武区| 合肥市| 榆树市| 丰都县| 贞丰县| 沈丘县| 冀州市| 西安市| 申扎县| 淮滨县| 海原县| 贵港市| 泊头市| 广安市| 呼和浩特市| 桑植县| 昌平区| 襄汾县| 化州市| 温宿县| 河东区| 乌拉特前旗| 如东县| 长沙市| 桓台县| 海南省| 闵行区| 绥滨县| 龙江县| 南木林县| 荔波县| 保康县| 洛阳市| 安宁市| 驻马店市| 济南市| 遵化市| 西平县| 波密县| 福建省| 台南县|