Java泛型和C++模板都是由泛型編程思想而來的。泛型編程是一種編程范式,能夠實現類型參數化。
在Java中,泛型使用"<>"符號來聲明類型參數。例如:
public class MyList<T> { private List<T> list = new ArrayList<>(); public void add(T t) { list.add(t); } public T get(int index) { return list.get(index); } }
這里的"
MyList<String> list = new MyList<>(); list.add("Hello"); String str = list.get(0);
在C++中,模板使用"<>"符號來聲明類型參數。例如:
template<class T> class MyList { private: vector<T> vec; public: void add(T t) { vec.push_back(t); } T get(int index) { return vec[index]; } };
這里的"<class T>"就是類型參數,MyList類可以在實例化時指定類型參數,如下:
MyList<string> list; list.add("Hello"); string str = list.get(0);
盡管Java泛型和C++模板都具有很多相似之處,但它們在實現時有所不同。Java泛型是類型擦除的,也就是說在編譯時擦除了類型參數信息,而C++模板則是逐個實例化的,每個實例都是由編譯器根據模板創建的。