日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

模板的局限性

發布時間:2025/4/16 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模板的局限性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模板的局限性

局限性:

  • 模板的通用性并不是萬能的

在上述代碼中提供的賦值操作,如果傳入的a和b是一個數組,就無法實現了


在上述代碼中,如果T的數據類型傳入的是像Person這樣的自定義數據類型,也無法正常運行

因此C++為了解決這種問題,提供模板的重載,可以為這些特定的類型提供具體化的模板



#include <iostream> using namespace std;#include <string>class Person { public:Person(string name, int age){this->m_Name = name;this->m_Age = age;}string m_Name;int m_Age; };//普通函數模板 template<class T> bool myCompare(T& a, T& b) {if (a == b){return true;}else{return false;} } //具體化,顯示具體化的原型和定意思以template<>開頭,并通過名稱來指出類型 //具體化優先于常規模板 template<> bool myCompare(Person &p1, Person &p2) {if ( p1.m_Name == p2.m_Name && p1.m_Age == p2.m_Age){return true;}else{return false;} }void test01() {int a = 10;int b = 20;//內置數據類型可以直接使用通用的函數模板bool ret = myCompare(a, b);if (ret){cout << "a == b " << endl;}else{cout << "a != b " << endl;} }void test02() {Person p1("Tom", 10);Person p2("Tom", 10);//自定義數據類型,不會調用普通的函數模板//可以創建具體化的Person數據類型的模板,用于特殊處理這個類型bool ret = myCompare(p1, p2);if (ret){cout << "p1 == p2 " << endl;}else{cout << "p1 != p2 " << endl;} }int main() {test01();test02();system("pause");return 0; }



總結:

  • 利用具體化的模板,可以解決自定義類型的通用化

  • 學習模板并不是為了寫模板,而是在STL能夠運用系統提供的模板

總結

以上是生活随笔為你收集整理的模板的局限性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。