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

模板形参

模板形参可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参。非类型形参跟在类型说明符之后声明,。类型形参跟在关键字 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

     }

 

 

非类型模板形参

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

 

 

泛型句柄类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值