LZ是要调用方法呢,还是内部原理的解释?
据我所知,C++模板是在预编译阶段就被实例化,这个实例化是函数或者类的实例,不是对象那种实例,而java的泛型,其实到了也是编译阶段,是为了防止程序员错误代码而引入的机制。
java的泛型有? extends A, ? super A,表示泛型使用具体的类,可以有继承关系,或者是某个类的父类。而c++的模板,更多的是直接代替。因为java本身有线程,和线程安全的问题。使用java有些集合是线程安全的,而c++本身没有这样的要求。
另外,java传递的都是引用,而c++容器存放的是对象的复制品。这个区别还是蛮大的