1.2 template (模板) 简介
2017-05-10 00:04
141 查看
模板是C++中泛型编程的基础。
一个模板就是一个创建类或函数的蓝图或者说公式。
· 函数模板
模板定义以关键字template开始,后跟一个模板参数列表(template parameter listing),这是一个用逗号分隔的一个或者多个模板参数(template parameter)列表,用小于号(<)和大于号(>)包围起来。
Note: 在模板定义的中,模板参数列表不能为空
compare函数的模板版本可能如下:
template <typename T> //<typename T>为模板参数列表
int compare ( const T &v1, const T &v2)
{
if ( v1 < v2 ) return -1;
if ( v2 < v1 ) return 1;
return 0;
}
inline函数模板:
函数模板可以用与非模板函数一样的方式声明为inline。说明符放在模板形参表之后、返回类型之前,不能放在关键字template之前。
//OK: inline specifier follows template parameter list
template <typename T> inline T min(const T&, const T &);
·class template (类模板)
类似函数模板,类模板以关键字template开始,后跟模板参数列表。
模板用于类的定义如下:
template <typename T>
class complex
{
public:
complex (T r = 0, T i = 0): re (r) , im (i) {}
complex& operator += (const complex&);
T real () const { return re;}
T imag () const { return im;}
private:
T re, im;
friend complex& __doapl (complex*, const complex&);
};
{
complex<double> c1(2.5,1.5);
complex<int> c2(2,6);
...
}
一个模板就是一个创建类或函数的蓝图或者说公式。
· 函数模板
模板定义以关键字template开始,后跟一个模板参数列表(template parameter listing),这是一个用逗号分隔的一个或者多个模板参数(template parameter)列表,用小于号(<)和大于号(>)包围起来。
Note: 在模板定义的中,模板参数列表不能为空
compare函数的模板版本可能如下:
template <typename T> //<typename T>为模板参数列表
int compare ( const T &v1, const T &v2)
{
if ( v1 < v2 ) return -1;
if ( v2 < v1 ) return 1;
return 0;
}
inline函数模板:
函数模板可以用与非模板函数一样的方式声明为inline。说明符放在模板形参表之后、返回类型之前,不能放在关键字template之前。
//OK: inline specifier follows template parameter list
template <typename T> inline T min(const T&, const T &);
·class template (类模板)
类似函数模板,类模板以关键字template开始,后跟模板参数列表。
模板用于类的定义如下:
template <typename T>
class complex
{
public:
complex (T r = 0, T i = 0): re (r) , im (i) {}
complex& operator += (const complex&);
T real () const { return re;}
T imag () const { return im;}
private:
T re, im;
friend complex& __doapl (complex*, const complex&);
};
{
complex<double> c1(2.5,1.5);
complex<int> c2(2,6);
...
}
相关文章推荐
- C++基础:C++模板(Template)简介
- C++基础:C++模板(Template)简介
- 简介:google ctemplate:简单易用的文字模板(转载)
- 简介:google ctemplate:简单易用的文字模板
- 简介:google ctemplate:简单易用的文字模板
- MooTools 1.2 Class Template-[转]MooTools 1.2类模板
- Velocity学习笔记3——Velocity 模板语言(VTL: Velocity Template Language)简介
- 简介:google ctemplate:简单易用的文字模板
- 模板template和宏定义define一起的例子
- template.js前端模板引擎使用详解
- [C++设计模式]template 模板方法模式
- 类模板-template
- 如何修改Carbide.C++ 1.2的模板文件格式
- template模板的声明及定义
- C++设计模式实现--模板(Template)模式
- 简介Python设计模式中的代理模式与模板方法模式编程
- 身份认证系统 JOSSO Single Sign-On 1.2 简介
- ASP.NET GridView_第四篇_控件和HTML标记的容器 TemplateField 模板列
- Return to the Basic - 模板(template)
- jQuery.loadTemplate客户端模板