C 學習35 模板中的函式式引數

2022-07-16 10:03:11 字數 912 閱讀 9345

c++對模板類的支援比較靈活,模板類的引數中除了可以有型別引數,還可以有普通引數。例如:

templateint n> class demo;

n 是乙個普通引數,用來傳遞資料,而不是型別,它與常見的函式中的引數一樣,可以在類體中使用。這稱為模板中的函式式引數。

t 用來傳遞資料的型別,n 用來傳遞資料的值,資料的值和型別都可以引數化,這是典型的物件導向程式設計思想。

為了演示模板中的函式式引數,下面我們來定義乙個陣列類:

#include using

namespace

std;

template

int n>

class

array

private

:

intlen;

t *p;

};template

int n>array

::array()

template

int n>t & array::operator(int

i)int

main()

for(i=0; i//

遍歷陣列

cout<<"

arr[

"<"

] =

"}return0;

}

本例中定義了乙個模板類,它有乙個型別引數 t 和乙個普通引數 n,t 用來說明陣列元素的型別,n 用來說明陣列長度。

請注意**第 33、36行,之所以能通過」[ ]「來訪問陣列元素,是因為過載了運算子」[ ]「,並且返回值是陣列元素的引用。如果直接返回陣列元素的值,那麼將無法給陣列元素賦值。

細心的讀者可能發現,這段**有記憶體洩露的風險,因為在建構函式中通過 new 分配了一段記憶體,卻沒有在析構函式中通過 delete 釋放。

C 模板 35 類模板物件做函式引數的三種情況

接著來學習類模板作為函式引數傳入是如何使用,如果需要把類模板作為引數一起傳入到函式中,一般有三種情況,下面分別用 來解釋這三種情況。1.指定傳入型別 就是在引數中,就指定型別,而不是,而是直接指定確定型別,例如。看下面 在printperson1 就是引數指定特定型別 include include...

Python3 5 函式式程式設計之引數詳解

1 函式返回值 1 return命令執行效果 結束當前函式執行,後邊再寫別的內容也不會執行。返回值的接收直接賦值給乙個變數,即 變數接收函式體中return定義返回值結果。usr bin env python coding utf 8 author zhengzhengliu def test1 p...

函式式程式設計中的引數

函式式程式設計中引數使用的學習筆記 def test x,y,z print 引數x x print 引數y y print 引數z z test a b z 實參與形參一一對應 x a y b z z print test y a x b z c 關鍵引數呼叫,跟形參位置無關 x b y a z ...