C++代码更多地靠第三方的库来实现这些功能,因为C++是一个国际标准,要在C++中加入这些语言之外的、面向应用的特性还需要很长一段路要走,希望本文能教会你更多东西。。
我们已经学过重载,对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同,正确的调用重载函数。
例如,为求两个数的***值,我们定义max()函数需要对不同的数据类型分别定义不同重载版本。
- int max(int x,int y);
- {
- return(x>y)?x:y ;
- }
- float max( float x,float y)
- {
- return (x>y)? x:y ;
- }
- double max(double x,double y)
- {
- return (c>y)? x:y ;
- }
现在,我们再重新审视上述的max()函数,它们都具有同样的功能,即求两个数的***值,能否只写一套代码解决这个问题呢?这样就会避免因重载函数定义不全面而带来的调用错误。
为解决上述问题C++代码引入模板机制,模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。
模板分类:模板分为函数模板和模板函数,当编译系统发现了一个对应的函数调用时,将根据实参的类型来确认是否匹配函数模板中对应的形参然后生成一个重载函数,称该重载函数为模板函数。
函数模板与模板函数的区别: 二者区别可以类比 类与对象的区别。函数模板与类相似是模板的定义,而模板函数与对象相似,是函数模板的实例,具有程序代码,占用内存空间。#t#
同样,在说明了一个类模板后,也可以创建类模板的实例即生成模板类。类模板与模板类的区别是:类模板是模板的定义,不是一个实在的类,模板类才是实实在在的类。
程序分析:main()函数中定义了两个整型变量n1 , n2 两个双精度类型变量d1 , d2然后调用min( n1, n2); 即实例化函数模板T min(T x, T y)其中T为int型,求出n1,n2中的最小值.同理调用min(d1,d2)时,求出d1,d2中的最小值。