C 深度解析 43 類模板的概念和意義

2021-10-03 06:27:18 字數 1893 閱讀 1336

2 類模板的工程應用

3 小結

c++ 將模板的思想應用於類,使得類的實現不再關注資料元素的具體型別,而只管組類所需要實現的功能,一些類主要用於儲存組織資料元素,如陣列類,鍊錶類,stack 類,queue 類

同樣的,在類宣告前使用 template 進行標識,語法如下:

// 過載'-'操作符,這裡就是為了編譯通過

intmain()

編譯器編譯時,首先對類本身進行編譯,如**第 5-13 行;建立具體的類時也要進行編譯,** 20、22 行;當使用成員函式時也要進行編譯,如第 21、23、24 行。如果我們不過載減號操作符,第 24 行將編譯出錯,但是第 22 行可以編譯通過。這也說明了生成具體類時要編譯,呼叫成員函式也要編譯。

$ g++43-

1.cpp -o 43-1

$ ./43-

13let's go!

minus

// operator.h

#ifndef _operator_h_

#define _operator_h_

template

<

typename t>

class

operator

;template

<

typename t>

t operator

::add

(t a, t b)

template

<

typename t>

t operator

::minus

(t a, t b)

template

<

typename t>

t operator

::multiply

(t a, t b)

template

<

typename t>

t operator

::divide

(t a, t b)

#endif

// 43-2.cpp

#include

#include

"operator.h"

using

namespace std;

intmain()

類模板的宣告與定義應在同乙個問價中,類模板外部定義的成員函式需要加上模板<>宣告

編譯執行

$ g++ 43-2.cpp -o 43-2

$ ./43-2320

-12

1、類模板使用時只能顯示指定型別

2、編譯器在宣告的地方和使用的地方進行編譯

3、類模板在同乙個檔案中實現

C 深度解析 48 類模板深度剖析

1.多引數類模板 2.程式設計實驗 include using namespace std 定義類模板 template 兩個不同引數。class test 下面類模板的特化,即引數型別為指標時的特殊情況 如何處理,下面是這種情況的類實現。因引數仍是泛型,故稱為部分特化 template class...

C 深度解析 45 函式模板的概念和意義

1.發散性問題 2.程式設計實驗 include include using namespace std 巨集定義 塊 define swap t,a,b do while 0 這裡不加這個分號 可能是保證乙個整體,保證當做一條語句處理。定義函式方式 void swap int a,int b 引用...

C 中類模板的概念和意義

1,在 c 中是否能夠將泛型的思想應用於類?1,函式模板是將泛型程式設計的思想應用於函式,就有了函式模板 2,可以,常用的 c 標準庫就是 c 中的標準模板庫,c 中的 stl 就是將泛型的思想應用於一系列的函式,就得到了函式模板,當然也有很多的類模板 3,類模板就是將泛型思想應用於 c 中的類而得...