日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++远征之模板篇——函数模板、类模板

發布時間:2023/12/20 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++远征之模板篇——函数模板、类模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于慕課網的學習整理,如有侵權,請告知刪除。



函數模板(vs模板函數)


1、為什么需要模板?

  • 函數體相同,只是類型不一樣而已。
  • 那么能否把數據的類型當做參數傳遞呢?肯定是可以的,這是模板。


2、關鍵字:template,typename,class

  • 后二者的作用是一樣的





  • 變量作為模板的參數:


  • 多參數函數模板,typename和class可以混用


  • 函數模板與重載





類模板

1、為什么需要類模板?

  • 原因和函數模板一樣,整體相同,而數據類型(一般指數據成員的數據類型,或者成員函數的返回參數類型、函數體中的數據的類型)不同。


2、使用舉例

  • 函數實體定義在類外時的寫法。
  • 定義在類內時,和普通的成員函數沒有任何區別。
  • 注意,寫在類外的函數,需要使用template<typename T>

?





3、模板代碼不能分離編譯

  • 不能分別寫在.h .cpp


4、代碼示例

#include <iostream> using namespace std;/*** 定義一個矩形類模板Rect* 成員函數:calcArea()、calePerimeter()* 數據成員:m_length、m_height*/ template<typename T> class Rect { public:Rect(T length,T height);T calcArea();T calePerimeter(); public:T m_length;T m_height; };/*** 類屬性賦值*/ template<typename T> Rect<T>::Rect(T length,T height) {m_length = length;m_height = height; }/*** 面積方法實現*/ template<typename T> T Rect<T>::calcArea() {return m_length * m_height; }/*** 周長方法實現*/ template<class T> T Rect<T>::calePerimeter() {return ( m_length + m_height) * 2; }int main(void) {Rect<int> rect(3, 6);cout << rect.calcArea() << endl;cout << rect.calePerimeter() << endl;return 0; }



總結

以上是生活随笔為你收集整理的c++远征之模板篇——函数模板、类模板的全部內容,希望文章能夠幫你解決所遇到的問題。

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