随笔 - 14, 文章 - 2, 评论 - 1, 引用 - 0
数据加载中……

模板

函数模板的一般定义形式是:
template<类型形式参数表>返回类型FunctionName(形式参数表)
{
//函数体定义
}
这样的函数模板定义不是一个实实在在的函数,编译系统不为其产生任何执行代码.

函数模板与模板函数的区别
函数模板是模板的定义,定义中用到通类型参数.
模板函数是实实在在的函数定义,它由编译系统在碰见具体的函数调用时所生成,具有程序代码.
template<class T>
T max(T a, T b)
{
return a>b?a:b;
}
可以像重载普通函数那样重载模板函数.
char* max(char* a, char* b)
{
  return (strcmp(a,b)?a:b);
}


类模板的一般说明形式:
template<类型形式参数表>class className
{
//类声明体
};
template<类型形式参数表>返回类型className<类型名表>::MemberFuncName1(形式参数表)
{
//成员函数定义体
}
其中的类型形式参数表与函数模板中的意义一样.后面的成员函数定义中,class_name<类型名表>中的类型名表,是类型形式参数的使用.
这样的一个说明(包括成员函数定义),不是一个实实在在的类,只是对类的描述,称为类模板(class template)
建立类模板之后,可用下列方式创建类模板的实例:
className<类型实在参数表>object;
其中类型实在参数表应与该类模板中的类型形式参数表匹配.class_name<类型实在参数表>是模板类(template class),object是该模板类的一个对象.

类模板与模板类的区别
类模板是模板的定义,不是一个实实在在的类,定义中用到通用类型参数.
模板类是实实在在的类定义,是类模板的实例化.类定义中参数被实际类型所代替.
template<class T>class List
{
public:
List();
....
}

template<类型形式参数表>返回类型className<类型名表>::MemberFuncName1(形式参数表)
template<class T>                                    List            <T>         ::List()
{
...
}

posted on 2008-07-23 15:43 Jeremy1111 阅读(199) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理