第十六章 模板与泛型编程 (略过很多部分)
来源:互联网 发布:c语言入门至精通 编辑:程序博客网 时间:2024/06/05 21:15
16.1 模板定义
1) 例子:
template <typename T>
inline int compare(const T& v1,constT& v2)
{
if(v1<v2)return -1;
if(v1>v2)return -1;
return0;
}
2) typename 和class是一样的
3) 在模板定义内部指定类型
template<class Param,class U>
Param fcn(Param * array,U value)
{
Param::size_type*p;//这个时候编译器默认size_type是成员变量而不是类型
typenameParam::size_type *p;//OK,这个时候是类型的意思
}
4) 非类型也可以作为模板形参
例子:
template<class T,size_t N>
void array_init(T (&parm)[N])
{
for(size_ti=0 ; i!=N;++i)
parm[i]=0;
}
int x[10];
int y[100];
array_init(x);//自动引用实例array_init<int,42>
array_init(y);//同上
16.2 实例化
1) 类模板形参是必须的,类型匹配必须完全匹配
2) 使用函数模板的时候,编译器通常会为我们推断模板实参
3) 函数指针的实例化
template<class T>
int compare(const T&,const T&)
{
}
int (*pf1) (const int &,const int &)=compare;
16.3 模板编译类型
关于export一般不要用…
16.6 模板特化
1) 函数
template<>
int compare <const char *>(const char* const &v1,const char *const v2)
{
return strcmp(v1,v2);
}
//这样在调用compare模板的时候,如果传入的参数是char*,那么就会用这个特例化的模板,而不是通用模板.
2) 可以对类特化,也可以只对类的成员特化
16.7 重载与函数模板
1) 首先考虑普通函数,其次考虑模板函数.首先考虑不需要隐式类型转换的函数,其次考虑需要隐式类型转换的函数
- 第十六章 模板与泛型编程 (略过很多部分)
- 第十六章 模板与泛型编程
- 第十六章 模板与泛型编程
- 第十六章 模板与泛型编程
- 【c++primer】第十六章:模板与泛型编程
- 第十六章 模板和泛型编程
- 【C++ Primer】【学习笔记】【第十六章】模板与泛型编程之一:模板定义
- C++ Primer复习和学习笔记 第十六章 模板与泛型编程
- 《C++primer(第五版)》学习之路-第十六章:模板与泛型编程
- C++primer第五版笔记-第十六章模板与泛型编程
- 《C++ Primer》读书笔记——第十六章_模板与泛型编程
- C++ Primer 4 第十六章 模板和泛型编程
- 【C++ Primer】第十六章 模板和泛型编程
- c++Primer,第十六章,模板和泛型编程
- c++ primer读书笔记--第十六章 模板和泛型编程
- 模板和泛型编程--模板定义--第十六章 --c++ primer
- 模板和泛型编程--模板编译模型--第十六章 --c++ primer(3)
- Effective C++读书笔记 第七部分 模板与泛型编程
- Ojective c 多态中,有关类的问题
- centos5.5 安装中文支持
- JFreeChart学习(一)
- IT公司机试常考的一道题--将任意字符串逆序输出或者输出所有排列
- 试验一下
- 第十六章 模板与泛型编程 (略过很多部分)
- Android的UI结构研究
- Ext JS 4倒计时:图形和图表
- 内核随记(二)——内核抢占与中断返回(转)
- 一些简单的tips
- 在MDI程序弹出对话框内嵌入CView
- HTTP请求报文格式 (转载)
- android sdk tool 的介绍
- 获取当前系统日期