泛型-模板函数-模板类

转载 2015年07月07日 15:52:18
函数模板的性质
1) 函数模板并不是真正的函数,它只是C++编译生成具体函数的一个模子。
2) 函数模板本身并不生成函数,实际生成的函数是替换函数模板的那个函数,比如上例中的add(sum1,sum2),
    这种替换是编译期就绑定的。
3) 函数模板不是只编译一份满足多重需要,而是为每一种替换它的函数编译一份。
4) 函数模板不可以设置默认模板实参。比如template <typename T=0>不可以。
5) 函数模板不允许自动类型转换。
C++模版函数的语法
template  <typename 模版参数列表…>
函数返回类型 函数名(形参列表…)
上面两行可以合并成一行。
例如:
下面的几种写法是等效的并且class 和typename是可以互换的。
template  <typename T1, typename T2>
T1 fun(T1, T2, int )
{  //…..}
template  <typename T1,T2>  T1 fun(T1, T2, int )
{  //…..}
template  <class T1, class T2>
 T1 fun(T1, T2, int )
{  //…..}
template  <class T1,T2>  T1 fun(T1, T2, int )
{  //…..}
C++模版类的语法
template  <class 模版参数列表…>
class 类名
{ //类体}
成员的实现…
例如:
//类声明部分,有两个模板参数T1,T2
template  <class T1, class T2 >  
class A {
   private:
   int a;
  T1 b;  //成员变量也可以用模板参数
  public: 
  int fun1(T1 x, int y );
 T2 fun2(T1 x, T2 y);
}
//类实现部分
template  <class T1, class T2 >
int A<T1>:: fun1(T1 x, int y ){//实现…… }
 template  <class T1, class T2 >
T2 A<T1,T2>:: fun2(T1 x, T2 y) {//实现…… }
 //使用类A
 int main( ) {
 //定义对象a,并用int替换T1, float替换T2
   A<int, float>  a;
   //实例化a,调用a的属性和方法……
}
由上例可以看出, 类模板参数T1,T2对类的成员变量和成员函数均有效。
在C++编程中,当你要实现的一个类的某些成员函数和成员变量的算法
数据类型有关,可以考虑用类模板。C++版的数据结构算法大都用类模板实现。
类模板的性质
1) 类模板可以设置默认模板实参。
2) 类模板不是真正的类,它只是C++编译器生成具体类的一个模子。

相关文章推荐

泛型编程注意不能将模板类的成员函数放在独立的实现文件中

泛型编程中,编写的类和函数可以多态地用于跨越编译时不相关的类型。一个类或函数可以用来操纵多种类型的对象。标准库中的容器、迭代器和算法都是很好地泛型编程的实例。在C++中,模板是泛型编程的基础。模板是创...

从汇编的眼光看C++(之递归函数与模板类) ,(之泛型编程) .

从汇编的眼光看C++(之递归函数与模板类) 【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】     递归,相信有过基本C语...

C++ 模板类,泛型

一、 范例: // Tclass.h #ifndef __T_CLASS_H__ #define __T_CLASS_H__ template class Tclass { public: ...
  • henuyx
  • henuyx
  • 2014年09月21日 22:56
  • 2413

泛型和标准模板类库

  • 2016年03月17日 23:39
  • 1.02MB
  • 下载

list模板类的主要函数介绍

list模板类的主要函数介绍 back() //返回最后一个元素 assign() //给list赋值 begin() //返回指向第一个元素的迭代器 clear() //删除所有元素...

模板类友元函数的一个例子

  • 2013年05月24日 19:37
  • 964B
  • 下载

C++中模板类的输入输出流重载函数实现

(转)C++模板类中操作符重载之">"重载   2011-01-10 17:05:31|  分类: IT与程序 |  标签: |字号大中小 订阅 在模板类中输入流“》”...
  • lyyslsw
  • lyyslsw
  • 2012年12月30日 20:47
  • 2541

模板类成员函数特化写法

昨天有对模板类的函数成员特化需求,目的是为了对不同模板参数实现不同的操作,结果在写过程中碰到already defined的问题(貌似是模板新手最容易碰到的问题了),类外的成员函数和同在类外的特化版本...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:泛型-模板函数-模板类
举报原因:
原因补充:

(最多只允许输入30个字)