程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++與C#對比學習:模板,泛型

C++與C#對比學習:模板,泛型

編輯:C++入門知識

為啥要用模板
 我們知道有很多不同的對象類型可能有相同的操作,基本類型如數值類型的都有加減乘除,比大小啊.一個個從現實中抽象出來的類就更是具體很多共性了.如果是同一類事物可以弄個父類出來就OK,比如動物都具體的某些通用操作就搞個animal基類完事.但如果不是同一類事物,就不容易整個繼承關系出來啊.比如人有身高,可以計算體重,一塊石頭也有長寬高,可以計算體重.如果有一個計算體重的函數,大家都可以拿來用,只要傳不同的參數就行.函數重載可以實現類似的功能,但太麻煩了點,要整蠻多個函數啊.

     於是在C++中就出現了模板(template)的概念.類中應用到模板就叫類模板,函數中應用到模板就叫函數模板.所謂模板嘛,就是個架子框架,我們拿來填充些內容才有實際用處.像做PPT時就有很多模板啊.C++中的模板就是裡面用到一些變量,類型是不知道的.只有你調用的時候傳個具體的類型,然後才會生成具體的類或模板,然後再調用.當然這是編譯器後台給你做了很多工作.使用模板編程又叫泛型編程.

     C#裡面沒有模板的概念,不過有個泛型的概念.有點像把模板簡化一下了.當然它們還是有些其他區別的.

 

C++模板用法
函數模板

舉個最簡單的例子,比較兩數大小

template<typename T>                 //也可以把typename換成class,T也可以隨便換成啥

T  max(T one, T two)

  {

    return one > two ? one : two;

}

 

int a = 123;

int b = 456;

int c = max(a,b);

 

類模板

 

template<typename TT>

class Simple

{

public:

   TT Max(TT a,TT b)

   {

return a > b ? a : b;

    }

}

;

 

double a = 123;

double b = 543;

Simple<double> sm;

double c = sm.Max(a,b);

 

C#泛型
 

class Temp<T>

    {

      public   bool  Max(T a, T b)

        {

            if (a.Equals(b))

                return true;

            else

                return false;

         }

    }

 

          Temp<int> temp = new Temp<int>();

            int a = 123;

            int b = 123;

            bool result = temp.Max(a, b);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved