模板作用域中的模板类型的引用

         通常,当使用类模板的名字时候,必须指定模板形参。这一规则有个例外:在类本身的作用域内部可以使用类模板的非限定名。例如:在默认构造函数和复制构造函数的声明中,名字Queue是Queue<Type>的缩写表示。实质上,编译器推断,当我们引用类的名字时,引用的是同一版本。因此,复制构造函数定义其实等价于:

Queue<Type>(const Queue<Type>& Q):head(0),tail(0)

                 {copy_elems(Q); }

编译器不会为类中使用的其他模板的模板形参进行这样的推断,因此,在声明伙伴类QueueItem的指针时,必须指定类型形参:

Queue<Type>* head;       //pointer to first element in Queue

Queue<Type>* tail;           //pointer to last element in Queue

这些声明指出,对于Queue类的给定实例化,head和tail指向为同一模板形参实例化的QueueItem类型的对象,即,在Queue<int>实例化的内部,head和tail的类型是QueueItem<int>*。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值