C++、C#、JAVA中模板与泛型
来源:互联网 发布:手机压缩图片软件 编辑:程序博客网 时间:2024/06/05 04:18
对于C++,泛型也叫做模板。
声明与定义泛型类: public template<class T> class TestClass{};
声明与定义泛型方法: public template<class T> void TestFunc(T t1, T t2){}
成员函数的模板声明与普通函数的模板声明一样只不过在定义的时候有点区别,如果是在类里面定义成员函数那就跟普通函数一样,但是如果是在类外面定义,那就有区别了,具体如下:
定义成员函数:如果类自己也声明了模板那么定义格式是:template<class C> template<class T> void TestClass::innerFunc(T t1, T t2){}
其中template<class C>是类前面声明的模板类型
C++同时还支持特化模板,意思就是在声明模板函数的时候同时就讲模板实例化了具体如下:
特化类模板格式:template<> class TestClass<string>{}这样就特化了一个String型的类模板
特化函数模板格式:template<> void func<string>(stringstr1, stringstr2){}这样就特化了一个String型的函数模板
对于模板的使用如下:
声明模板类的实例对象 TestClass<string> tc1,TestClass<int> tc2等等。。。
调用模板函数:func(20,50)//调用的是func(int, int),func("hello","world")//调用的是func(string, string)等等
如果模板函数的返回值类型也是一个模板类型则需要这样子调用:func<int>(30,50)//调用的函数将返回int类型,func<string>("hello","world")//调用的函数将返回int类型
下面就是JAVA中的泛型了,JAVA的泛型就比C++简单多了
JAVA中定义泛型类:class TestClass<T> {};
JAVA中定义泛型方法:public <T> T void func(T t1, T t2){}
JAVA中泛型的上限与下限:public <T extends String> T void func(T t1, T t2){}定义下限泛型方法,意思T至少是String类型的或者是String类型的子类
public <T super String> T void func(T t1, T t2){}定义上限泛型方法,意思T只能是String类型或者是String类型的父类
JAVA泛型中的通配符:public void func<?>(){}当调用这个方法时,JVM会自动帮我们去匹配这个”?“在调用是具体是社呢类型
JAVA中使用泛型的方法与C++几乎一模一样,只是在对于讲泛型类型作为函数返回类型时,JAVA不需要func<int>(30,50);的方法调用,而是跟普通的函数一样是通过func(30,50)调用即可。
最后就是C#部分,C#部分跟JAVA是一样的,没有什么太大的区别。
- C++、C#、JAVA中模板与泛型
- C++泛型与模板
- C++:模板与泛型编程
- [C++]模板与泛型编程
- 【C++】模板与泛型编程
- C++中模板与用C语言中实现模板
- C/C++:函数模板与类模板
- [C/C++]模板函数与模板类
- C++/CLR泛型与C++模板的对比
- 《C++Primer》 3.19 模板与泛型编程
- Effective C++(七)模板与泛型编程
- Effective C++(七)模板与泛型编程
- Effective C++(七)模板与泛型编程
- effective C++: 7模板与泛型编程
- 【c++primer】第十六章:模板与泛型编程
- c++primer要点-模板与泛型编程
- C++(33)模板与泛型之实例化
- [C++] 模板与泛型编程(1)
- 解读Windows Embedded 8 的智能系统战略
- 自定义SQlite数据文件存放位置
- android解析xml和json区别
- java设计模式---单例模式(简单笔记)
- xxx.c: Error: C3065E: type of input file 'xxxx' unknown
- C++、C#、JAVA中模板与泛型
- VB控制Word文档实例精选一
- 2008-06-18 17:23 VB 中一些常见的问题分析
- micro2440/tiny6410使用JLINK直接烧录nand flash
- rzsz的安装
- Android NDK开发的环境配置和使用
- extjs中的事件注册和调用顺序
- 小巧的编辑器Gnu nano-------入门篇
- 超顺滑!优化android ListView拖拽移位