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

    xiaoxiao2024-05-30  108

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

    3.6 模板

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

    程序清单3.5 Stack模板

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

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

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

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

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

    相关资源:google-c 编程风格(高清版).pdf
    最新回复(0)