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

         通常,当使用类模板的名字时候,必须指定模板形参。这一规则有个例外:在类本身的作用域内部可以使用类模板的非限定名。例如:在默认构造函数和复制构造函数的声明中,名字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>*。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值