形式: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...