1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      泛型編程之函數(shù)模板

       》模板的引入,為什么要使用模板?

      創(chuàng)新互聯(lián)服務(wù)項目包括鄢陵網(wǎng)站建設(shè)、鄢陵網(wǎng)站制作、鄢陵網(wǎng)頁制作以及鄢陵網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,鄢陵網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到鄢陵省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

         在程序設(shè)計中往往存在這樣一種現(xiàn)象:兩個或多個函數(shù)的函數(shù)體完全相同,差別僅在于他們的參數(shù)類型不同,就需要分別給不同的數(shù)據(jù)類型定義不同的版本。

         解決以上問題的一個比較好的方法就是使用模板。模板是實現(xiàn)代碼重用機制的一種工具,他可以實現(xiàn)類型參數(shù)化,即把類型定義為參數(shù),從而實現(xiàn)代碼復(fù)用。

       》模板的分類:

         模板分為函數(shù)模板和類模板。他們分別允許用戶構(gòu)造模板函數(shù)和模板類。

       》函數(shù)模板:

         建立一個通用函數(shù),其函數(shù)返回類型和形參類型不確定,用一個虛擬的類型來代表,這個通用函數(shù)就稱為函數(shù)模板。

        函數(shù)模板聲明格式:

         template

         返回類型 函數(shù)名(模板形參表)

         {函數(shù)體

         }

      其中template是一個表明聲明一個模板的關(guān)鍵字;

        typename也可以用class作用一樣表示其后是一個虛擬的類型名;

        類型參數(shù)實際上是一個類型名;

      例:

      template 
      T max(T x, T y)
      {
      	return (x > y) ? x : y;
      }

      》如何使用函數(shù)模板

        上面max()函數(shù)代表一類函數(shù),要使用這個模板函數(shù)就需要將T實例化為確定的數(shù)據(jù)類型,這個實例化的參數(shù)就叫做模板實參。

        函數(shù)名(模板實參表)

      例:

      template 
      T max(T x, T y)
      {
      return (x > y) ? x : y;
      }
      int main()
      {
      int i1 = 19,i2=23;
      double d1 = 50.344, d2 = 4656.346;
      char c1 = 'k', c2 = 'n';
      cout << "The max of i1,i2 is= " << max(i1, i2) << endl;
      cout << "The max of d1,d2 is= " << max(d1, d2) << endl;
      cout << "The max of c1,c2 is= " << max(c1, c2) << endl;
      return 0;
      }

      結(jié)果:

             泛型編程之函數(shù)模板

      從上例看出,函數(shù)模板提供了一類函數(shù)的抽象,它以類型參數(shù)T為參數(shù)及函數(shù)返回值的虛擬類型。函數(shù)模板經(jīng)實例化而生成的具體函數(shù)稱為模板函數(shù)。

      》一個和指針相關(guān)的函數(shù)模板

      template 
      AT sum(AT* array, int size = 0)
      {
      AT total = 0;
      for (int i = 0; i < size; i++)
      {
      total += array[i];
      }
      return total;
      };
      int int_array[] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 1010 };
      double double_array[] = { 11.1,22.2,33.3, 44.4, 55.5, 66.6, 77.7, 88.8, 99.9, 100.10 };
      int main()
      {
      int itotal = sum(int_array, 10);
      double dtotal = sum(double_array, 10);
      cout << "這個整型數(shù)組的元素之和是:" << itotal << endl;
      cout << "這個雙精度型數(shù)組的元素之和是:" << dtotal << endl;
      return 0;
      }

      結(jié)果:

      泛型編程之函數(shù)模板

        在程序中生成了兩個模板函數(shù),sum(int_array)和sum(double_array)分別將類型參數(shù)實例化為int型和double型。

      》同樣的函數(shù)模板也允許使用多個類型參數(shù),但是template定義部分的每個類型參數(shù)前必須要有關(guān)鍵字typename。

      template 
      void two_para(para1 x, para2 y)
      {
      cout << x << ' ' << y << endl;
      }
      int main()
      {
      two_para(99, "zhang");
      two_para(123.45, 888L);
      return 0;
      }

      結(jié)果:

      泛型編程之函數(shù)模板

      1.在這個程序中,生成了兩個模板函數(shù),“two_para(99,"zhang")”,分別用模板實參int,char*將類型參數(shù)para1和para2實例化,“two_para(123.45,888L)”,分別用模板實參double,long將類型參數(shù)para1和para2實例化,

      2.在template語句與函數(shù)模板定義語句之前不允許插入別的語句。

      3.同一般函數(shù)一樣,函數(shù)模板也可以重載。

      template 
      Type min(Type x, Type y)
      {
      	return (x < y) ? x : y;
      }
      
      template 
      Type min(Type x, Type y, Type z)
      {
      	Type t;
      	t = (x < y) ? x : y;
      	return (t < z) ? t: z;
      }
      
      int main()
      {
      	int m = 10, n = 20, min2;
      	double a = 10.1, b = 20.2, c = 30.3, min3;
      	min2 = min(m, n);
      	min3 = min(a, b, c);
      	cout << "min(" << m << "," << n << ")=" << min2 << endl;
      	cout << "min(" << a << "," << b << "," << c << ")=" << min3 << endl;
      	return 0;
      }

      結(jié)果:

         泛型編程之函數(shù)模板

      》函數(shù)模板和非函數(shù)模板可以重載,調(diào)用順序是:首先尋找一個參數(shù)完全匹配的非函數(shù)模板,如果找到就調(diào)用它,如果沒有就尋找函數(shù)模板將其實例化,產(chǎn)生一個匹配的模板函數(shù)。


      分享名稱:泛型編程之函數(shù)模板
      文章起源:http://www.ef60e0e.cn/article/pijsde.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        汽车| 高州市| 石嘴山市| 青阳县| 宁南县| 鹰潭市| 子长县| 金溪县| 松江区| 翼城县| 平和县| 历史| 大厂| 唐山市| 仁怀市| 平塘县| 张家界市| 昌乐县| 弥勒县| 奈曼旗| 互助| 南溪县| 安仁县| 沂源县| 乐安县| 高唐县| 韶山市| 怀集县| 乌苏市| 曲麻莱县| 天等县| 柞水县| 青田县| 长汀县| 秦皇岛市| 莎车县| 柳林县| 疏勒县| 龙井市| 扶余县| 澄江县|