1,在 c++ 中是否能夠將泛型的思想應用於類?
1,函式模板是將泛型程式設計的思想應用於函式,就有了函式模板;
2,可以,常用的 c++ 標準庫就是 c++ 中的標準模板庫,c++ 中的 stl 就是將泛型的思想應用於一系列的函式,就得到了函式模板,當然也有很多的類模板;
3,類模板就是將泛型思想應用於 c++ 中的類而得到的新概念;
2,類模板:
1,一些類主要用於儲存和組織資料元素;
1,類模板就是為了資料結構而誕生的;
2,類中資料組織的方式和資料元素的 具體型別無關;
3,如:陣列類、鍊錶類、stack 類、queue 類等;
1,c++ 中將模板的思想應用於類,使得類的實現不關注資料元素的具體型別,而只關注類所需實現的功能;
3,c++ 中的類模板:
1,以相同的方式處理不同的型別;
2,在類宣告前使用 template 進行標識;
3,< typename t > 用於說明類中使用的泛指型別 t;
1,**示例:
1 template < typename t >2class operator //
class 表明將泛型程式設計應用於類
3;
4,類模板的應用:
1,只能顯示指定具體型別,無法自動推導;
2,使用具體型別 < type > 定義物件;
1,**示例:
1 operatorop1;2 operatorop2;
3int i = op1.op(1, 20);4
string s = op2.op("
d.t.
", "
software
");
4,類模板:
1,宣告的泛指型別 t 可以出現在類模板的任意地方;
2,編譯器對類模板的處理方式和函式模板相同;
1,從類模板通過具體型別產生不同的類;
1,編譯器將類模板當做乙個模子,這個模子可以產生許多實實在在的類;
2,在宣告的地方對類模板**本身進行編譯;
3,在使用的地方對引數替換後的**進行編譯;
5,類模板初探程式設計實驗:
1 #include 2 #include 34using
namespace
std;
56 template < typename t >
7class operator //
要是用這個類模板有乙個前提條件,即當前的 operator 類模板要操作的資料型別必須支援 +、-、*、/ 這四個運算子,這四個運算子如果要運用於自己定義的資料型別類,要過載這四個運算子;第一次編譯是對類模板本身的語法進行編譯;814
15t minus(t a, t b)
1619
20t multiply(t a, t b)
2124
25t divide(t a, t b)
2629
};30
31string
operator-(string& l, string& r) //
全域性函式方式過載 - 操作符,編譯通過;先類內部、再全域性
3235
36int
main()
37
1,編譯器對類模板第一次編譯針對類模板本身**進行編譯;
2,第二次編譯是使用類模板時針對每個成員函式獨立編譯;
6,類模板的工程應用:
1,類模板必須在標頭檔案中定義;
2,類模板不能分開實現在不同的檔案中;
3,類模板外部定義的成員函式需要加上模板 <> 宣告;
1,將類模板的成員函式實現放到類模板的外部實現;
2,以上三條規則不是 c++ 和編譯器的一部分,只是工程應用裡習慣這樣做,這樣做後,**可維護性、擴充套件性都會變好,因此建議遵守這三條規則;
7,模板類的工程應用程式設計實驗:
1,標頭檔案(名字和類名一樣) operator.h 中的內容:
1 #ifndef _operator_h_ //防止被包含兩次;
2#define _operator_h_
34 template < typename t >
5class
operator6;
1314 template < typename t > //
加上類模板;
15 t operator::add(t a, t b) //
add() 是 operator 類模板的;
1619
20 template < typename t >
21 t operator::minus(t a, t b)
2225
26 template < typename t >
27 t operator::multiply(t a, t b)
2831
32 template < typename t >
33 t operator::divide(t a, t b)
3437
38#endif
2,標頭檔案的應用;
1 #include 2 #include3 #include "
operator.h"4
5using
namespace
std;67
intmain()
8
1,三條規則不是硬性要求但是卻可以帶來很大好處;
8,小結:
1,泛型程式設計的思想可以應用於類;
2,類模板以相同的方式處理不同型別的資料;
3,類模板非常適用於編寫資料結構相關的**;
4,類模板在使用時只能顯示指定型別;
類模板的概念和意義
類模板的概念和意義 類模板一些類主要用於儲存和組織資料元素 類中資料組織的方式和資料元素的具體型別無關 如 陣列類,鍊錶類,stack類,queue類等 c 中將模板的思想應用於類,使得類的實現不關注資料元素的具體型別,而只關注類所需要實現的功能 c 中的類模板 以相同的方式處理不同的型別 在類宣告...
58 類模板的概念和意義
一些類主要用於儲存和組織資料元素,類中資料組織的方式和資料元素的具體型別無關,如陣列類,鍊錶類,stack類,queue類等。c 中將模板的思想應用於類,使得類的實現不關注資料元素的具體型別,而只關注類所需要實現的功能。c 中的類模板 以相同的方式處理不同的型別,在類宣告前使用template進行標...
58 類模板的概念和意義
1 思考 在c 中是否能夠將泛型的思想運用於類?yes 2 類模板 c 中將模板的思想應用於類,使得類的實現不關注資料元素的具體型別,而只關注類所需要實現的功能。template typename t class operator operator op1 operator op2 int i op...