c++模板和java泛型
所属分类 c
浏览量 852
模板template 泛型generic
参数化类型(parameterized type)或 参量多态(parametric polymorphism)
实现手段
代码生成 vs 类型擦除
Java泛型 类型擦除 语法糖
java JVM 中没有泛型,泛型会被擦除,使用 Object
如果有限制,例如 T extends Comparable,则使用Comparable
C++ 模板本质上就是一套宏指令集
编译器会针对每种类型创建一份模板代码的副本 模板代码膨胀
MyClass不会与MyClass共享静态变量
两个MyClass实例则会共享静态变量
Java中 MyClass类的静态变量会由所有MyClass实例共享
java中没有 template 关键字
C++模板可以使用int等基本数据类型,Java必须使用引用类型
Java中可将模板的类型参数限定为某种特定类型
C++中,类型参数可以实例化,Java不可以实例化
Java中,类型参数(MyClass中的Foo)不能用于静态方法和变量
因为他们会被MyClass和MyClass共享
但在C++中,这些类是不同的,类型参数可以用于静态方法和静态变量
Java中,不管类型参数是什么,MyClass的所有实例都是同一类型 ,类型参数会在运行时被抹去
C++中,参数类型不同,实例类型也不同
上一篇
下一篇
现代C++特性
C++防止头文件被重复引入的3种方法
c++11 STL 例子
c++11 线程实例
NULL 与 nullptr
c++ 变量名 冲突