C++從0到1基礎教程之泛型編程

前言

上一章節主要是詳細介紹了C++虛函數和多態,不清楚的能夠回顧一下哦。本章節主要針對於C++泛型編程作個詳細介紹。算法

什麼是模板

模板是泛型編程的基礎,泛型編程即以一種獨立於任何特定類型的方式編寫代碼。模板是建立泛型類或函數的藍圖或公式。庫容器,好比迭代器和算法,都是泛型編程的例子,它們都使用了模板的概念。那麼什麼是模板呢?其實很簡單,模板就是把類型當作未知量進行參數化處理的一種編程方式。例如咱們在求解二者最大值的問題時候,由於數據類型不一樣的狀況下,咱們可能須要書寫一下集中形式的函數:編程

而模板編程就是把用到的類型當作一個未知量,例如用標識符type替換,則max可函數能夠改成以下代碼:微信

顯然C++中沒法識別未聲明的標識符,因此要先告訴編譯器咱們這裏將會要用到一個未知類型,採用的語法是template <typename type>,故上述代碼能夠改成以下代碼,程序依然能成功運行。代碼以下:app

函數模板

函數模板就是函數中用到了未知類型函數就是函數模板,上文中其實咱們已經學習了函數模板,主要注意的問題是函數模板的調用主要有如下兩種:編輯器

  • 顯式調用函數

  • 隱式調用學習

綜合案例以下:測試

上述代碼中,typename和class通用的哦,咱們通常用函數模板用的都是隱式調用,能少寫碼何樂而不爲。要注意的是當函數模板的類型是自定義類型時,咱們必定要考慮運算符是否知足基本數據類型的運算符規則,若是不知足必定要本身重載運算符。以下代碼:flex

類模板

類模板就是類中用到了未知類型。類模板其實也很簡單,注意項主要是如下幾個點:url

  • 類模板必須顯式調用

  • 類模板中的類不是完整的類型用到類名的地方都須要採用類名<未知類型>的用法

類目中常常會存在模板嵌套的狀況,模板嵌套只要剝好洋蔥便可。以下代碼:


尾言

本欄目到這裏結束了,做業:採用模板寫一個list鏈表,測試一下不一樣數據類型的鏈表。




本文分享自微信公衆號 - C語言編程基礎(goodStudyCode)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索