您的位置:首页 > 编程语言 > C语言/C++

C++Primer学习笔记第十六章(16/18)类 模型与泛型编程

2010-10-28 21:42 323 查看
模板形参

模板形参可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参。非类型形参跟在类型说明符之后声明,。类型形参跟在关键字 class 或 typename 之后定义,例如,class T 是名为 T 的类型形参,在这里 class 和 typename 没有区别。
模板形参遵循常规名字屏蔽规则

为什么定义了size_type这个东西
例如,标准库的容器类定义了不同的类型,如 size_type,使我们能够以独立于机器的方式使用容器。

避免在模板定义内部指定类型时出现的指代不明晰
template
<class Parm, class U>
Parm fcn(Parm* array, U value)
{
Parm::size_type * p; // If
Parm::size_type is a type, then a declaration
// If Parm::size_type
is an object, then multiplication
}
我们知道 size_type 必定是绑定到 Parm 的那个类型的成员,但我们不知道 size_type 是一个类型成员的名字还是一个数据成员的名字,默认情况下,编译器假定这样的名字指定数据成员,而不是类型。

如果希望编译器将 size_type 当作类型,则必须显式告诉编译器这样做:
template <class Parm, class U>
Parm fcn(Parm* array, U value)
{
typename Parm::size_type * p; // ok:
declares p to be a pointer
}


非类型模板形参
模板非类型形参是模板定义内部的常量值。


泛型句柄类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: