陣列類的封裝(泛型程式設計)

2021-10-02 06:49:13 字數 1101 閱讀 4976

形式:template< class t>或者template< typename t>

這個是提高**的適用性,比如兩個數相加,如果直接用普通函式那麼,就要寫幾個不同引數的過載,如果用泛型程式設計,只需寫乙個。

下面是類模板的應用陣列類的封裝(注意泛型類,直接在標頭檔案實現,不用使用分檔案實現,而且檔案字尾.h改為.hpp):

#pragma  once 

#include

using

namespace std;

template

<

class

t>

class

myarray

myarray

(const myarray & array)}~

myarray()

}//賦值操作符過載

myarray&

operator

=(myarray & array)

this

->m_capacity = array.m_capacity;

this

->m_size = array.m_size;

this

->paddress =

new t[

this

->m_capacity]

;for

(int i =

0; i < m_size; i++)}

//過載

//myarray arr(10);

//arr[0] = 100;

t &operator

(int index)

//尾插法

void

push_back

(t val)

//獲取大小

intgetsize()

//獲取容量

intgetcapacity()

private

: t * paddress;

//指向堆區指標

int m_capacity;

//容量

int m_size;

};

泛型 泛型類 泛型方法 泛型擦除

1 是什麼?一種允許我們在不確定引數型別時候使用的型別。例如我不知道a方法應該會傳string還是int,我就用個泛型先佔坑。2 為什麼要用泛型?泛型可以在編譯期自動確定具體型別,檢查型別是否匹配,可以提高 的重用率,減少冗餘編碼。3 泛型與object的區別?像上面說的我不知道方法a的引數型別,其...

泛型 泛型類的定義

泛型的定義與普通類定義相比,首先在類名後增加了由尖括號標識的型別變數,一般用t表示。t可以在泛型中的任何地方使用。對於泛化介面也是這樣定義。我們來看看普通類box以及box的泛型的 1 普通類box的定義 public class mybox public object get 2 box類的泛型定...

泛型之泛型類

public class a 構造引數型別上使用泛型 public a t t 方法返回值上使用泛型 public t gett 方法的引數上使用泛型 這是泛型類的方法,而不是泛型方法 public void sett t t 方法的返回值和引數型別上使用泛型 public t foo t t pu...