《C++ Templates中文版》——2.5 小结

本节书摘来自异步社区出版社《C++ Templates中文版》一书中的第2章,第2.5节,作者: 【美】David Vandevoorde , 【德】Nicolai M. Josuttis,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 小结

模板函数为不同的模板实参定义了一个函数家族。
当你传递模板实参的时候,可以根据实参的类型来对函数模板进行实例化。
你可以显式指定模板参数。
你可以重载函数模板。
当重载函数模板的时候,把你的改变限制在:显式地指定模板参数。
一定要让函数模板的所有重载版本的声明都位于它们被调用的位置之前。
[1]  例如,如果在名字空间std定义了某种实参类型(如string),那么根据C++的查找规则,全局名字空间的max()模板和std max()模板都可以被找到。

[2]  “one-entity-fits-all(一个实体适应所有类型)”的方法或许是可以实现的,但实际中几乎没有被实现过。因为所有的语言规则都是以“产生出不同实体”这个概念为基础的。

[3]  译注:也有人把deduction翻译成推演、推导、推断和推算。

[4]  这个限制主要是由函数模板在历史发展过程中的一个失误造成的。事实上,对于现今的C++编译器,要实现这个特性并没有技术障碍,C++在以后可能会提供这个特性(见13.3节)。

[5]  对于那些作用域局部于函数内部的值,你就不应该通过引用来返回该值(即返回一个指向该值的引用)。因为当程序离开这个函数的作用域之后,该值将不再存在,该引用也不再有效。

[6]  可以把演绎看成是重载解析的一部分——重载解析是一个不依赖于返回类型选择的过程,唯一的例外就是转型操作符成员的返回类型。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

c templates(C模板)是一种用于 C 语言的功能强大的编程工具,在程序设计中具有广泛的应用。它通过定义通用的数据结构或函数,可以实现代码的复用和泛化。 C 模板可以定义通用的数据类型,例如数组、链表等,使得我们可以在不同的程序中重复使用这些数据结构,而不用每次都重新实现。这样一来,我们可以节省大量的时间和精力。同时,C 模板还可以实现通用的函数,例如排序算法、搜索算法等,使得我们可以处理不同类型的数据,不论是整数还是浮点数,都可以使用相同的函数进行操作。 通过使用 C 模板,我们可以使用抽象的方式编写程序,将具体的实现细节抽离出来,使得代码更加清晰易懂、易于维护。例如,我们可以定义一个通用的栈数据结构,然后使用模板来实现不同类型的栈,如整数栈、字符栈等。这样一来,我们可以在不同的项目中复用这些通用的数据结构,提高了代码的可重用性和效率。 此外,C 模板还可以通过编译器的静态类型检查,避免了一些常见的编程错误,提高代码的健壮性。当我们在使用模板时,编译器会检查传入的参数类型是否与模板定义的类型一致,如果不一致,编译器会给出错误提示。这样可以提前发现潜在的问题,减少程序运行时的错误。 总的来说,C 模板是一种非常有用的编程工具,它可以提高代码的复用性和可维护性,减少编程错误,提高程序的性能。通过合理地运用 C 模板,我们可以更加高效地编写 C 程序,提高我们的开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值