《C++编程风格(修订版)》——3.6 模板

本节书摘来自异步社区出版社《C++编程风格(修订版)》一书中的第3章,第3.6节,作者:【美】Tom Cargill,更多章节内容可以访问云栖社区“异步社区”公众号查看。

3.6 模板

C++编程风格(修订版)
IntStack和CharStack的共同属性可以用另一种不同的方式来表达,即C++的模板机制。模板也被称之为参数化类型,在程序清单3.5中给出了堆栈的模板。

程序清单3.5 Stack模板
image
image

Stack模板定义了一组类。在使用Stack模板来声明一个对象时,必须同时提供一个类型来替换模板声明中的类型T。例如,
image

在上面的语句中,声明了一个对象stackOfChar,这个对象是一个存储10个char类型值的堆栈,而在下面的语句中:
image

声明了一个对象stackOfInt,这个对象是一个存储20个int类型值的堆栈。函数push()中的参数类型和pop()的返回类型也都是T。

将模板增加到C++的主要推动力是因为模板可以支持通用的集合类。我们不仅可以创建整数类型的堆栈和字符类型的堆栈,还可以创建浮点类型的堆栈、char指针类型的堆栈等。

用模板来实例化的对象与那些使用IntStack和CharStack来实例化的对象在行为上只存在细微的差别。在最初的CharStack构造函数中,可以带有第二个参数,用于指定将要压入栈中的字符串。但在IntStack的构造函数中并没有这个参数。因此,如果使用模板来同时表示这两个类,那么这个差别将无法表达出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值