c 中模板 類模板的宣告和定義

2021-08-10 22:11:12 字數 1637 閱讀 6399

一、函式模板用法

1.1申明和定義

ø  在函式申明和定義前面,加乙個模板template

t, class

c>就行,其餘正常定義和申明

ø  呼叫時,跟正常函式一樣呼叫

注意:ø  模板在呼叫時,才確定引數的具體型別!!!

ø  模板的宣告或定義只能在全域性,命名空間或類範圍內進行。即不能在區域性範圍,函式內進行,比如不能在main函式中宣告或定義乙個模板

1.2呼叫示例

templatet add1(t, t, c);

int main()

templatet add1(t a, t b,c c)

二、類模板用法

2.1類模板的宣告和定義

2.1.1類模板的申明

ø  在類前面加乙個模板template

t, class

c>就行

2.1.2類模板的定義

ø  在類在類前面加乙個模板template

t, class

c>

ø  在定義類後加。比如類a的函式add,定義為void a::add(t a, t b)

2.1.3類模板呼叫

將在定義類後加改為

比如示例乙個物件a:

aa;
2.2具體示例

*.h申明

templateclassa//類模板宣告,類前面加template;
*.cpp定義

//類模板宣告,類前面加template。並且類a後面帶這個templateinta::add1(tt1, t t2)

成員函式呼叫

aa;//例項化乙個類,a後面帶這個aint aa =a.add1(2, 3);//呼叫模板成員函式,跟模板函式一樣呼叫就行
三、模板類預設值設定

3.1模板類的形參為型別形參

ø  類模板可以設定預設值,函式模板不能設定預設值

ø  設定預設值時,盡量放在最後,不要放在開頭

ø  如果放在開頭,後面一定要設定預設值,並且跟第乙個預設值一樣

例如:

templateclass ceildemo
3.2示例

templatedemo03.h

#ifndeftemplate_demo_03

#define template_demo_03

//定義帶預設型別形參的類模板。這裡把t2預設設定為int型

templateclass ceildemo;

//在類模板的外部定義類中的成員時template後的形參表應省略預設的形參型別

templateint ceildemo::ceil(t1a, t2 b)

#endif

templatedemo03.cpp

#include#include "templatedemo03.h"

void main(){

ceildemocd;

cout <

C 模板類定義與宣告

pragma once ifndef grid h define grid h template class grid int getwidth const static const int kdefaultwidth 10 static const int kdefaultheight 10 pr...

C 模板類定義與宣告

宣告和使用類模板 如果在類模板外定義成員函式,應寫成類模板形式 template 測試的模板類,如下 ifndef compare h define compare h template class compare endif include compare.h template compare c...

C 模板類的宣告 定義和使用

說明 1.將c 模板類的宣告和定義都放在乙個檔案,如.h或.cpp檔案中,使用的時候加入 include 模板類檔名.h 或.cpp 即可。2.將c 模板類的宣告和定義分別放在.h和.cpp檔案中且在.cpp檔案中包含 include h 不過在使用時,會因為不同的開發環境而有所不同 a.在整合開發...