1. 你的类需要一个构造函数吗?2. 你的数据成员是私有的吗?3. 你的类需要一个无参的构造函数吗?4. 是不是每个构造函数初始化所有的数据成员?5. 类需要析构函数吗?6. 类需要一个虚析构函数吗?7. 你的类需要复制构造函数吗?8. 你的类需要一个赋值操作符吗?9. 你的赋值操作符能正确地将对象赋给对象本身吗?10. 你的类需要定义关系操作符吗?11. 删除数组时你记住用 delete [] 了吗?12. 记得在复制构造函数和赋值操作符的参数类型中加上 const 了吗?13. 如果函数有引用参数,它们应该是 const 引用吗?14. 记得适当地声明成员函数为 const 了吗?模板、泛型编程与 STLC++ 在 Bjarne Stroustrup 手中诞生时,这门语言就一直受到 Andrew 大神的重点关注 。从早期的面向对象编程理念开始,Andrew 大神就在思考应该赋予 C++ 哪些新特性 。
在《C++ 沉思录》中,关于模板与泛型编程的讨论相当经典 。这其实就是Andrew 大神揭示了他对于模板及其应用的的思考脉络,在他的引领下,我们从容器类的设计讨论开始,逐渐领悟泛型编程的精妙之处 。
模板的本质是受限的语法宏,但它比普通宏要更加安全,且编译后的运行速度几乎与宏一样快,这对于强调性能的 C++ 程序员来说,是非常重要的 。

文章插图
1990年,模板(Template)被纳入 C++ 标准之中,这便是 Andrew 大神在持续研究之后,做出积极推动的结果 。模板这一特性可谓打开了 C++ 新的局面,它所支持的泛型编程使得参数类型抽象化,程序员只需要编写与程序相关的细节就好 。
泛型编程结出最丰硕的果实,就是 STL (Standard Template Library,标准模板库) 。STL 是 Alexander Stepanov 在惠普 Palo Alto 实验室时开发的算法库,1993年时被 Andrew 大神慧眼相中,并积极向 ANSI/ISO C++ 标准委员会推介 。

文章插图
Alexander Stepanov
最终在1994年,STL 纳入 C++ 标准之中,成为之后程序员们的福音 。因为大家不用像 C 语言那样,在基础数据结构上重复地造轮子 。STL 提供的各种容器类与诸如检索、排序的高效算法,让程序员得以将精力放在业务逻辑的实现上,可以说是极大地解放了生产力 。
同样在书中,Andrew 大神对 STL 的主要组件的实现原理,分别以浅显的示例作了讨论,包括container(容器),algorithm(算法),iterator(迭代器),adapter(适配器),function object(函数对象) 。

文章插图
这使得我们对 STL 的实现有了直观的认识,相信我们再去钻研 STL 时,就能得其门而入 。另一方面,无论是应用 STL,还是通过泛型编程扩充自己的功能库,都可以做到得心应手了 。
库与语言特性Andrew 大神对程序库的态度还是很鲜明的,就是没事不要去重复发明轮子 。STL 就是他践行这一理念的最好证明 。
在书中,他就以解析一段文本为例,通过使用库提供的变长字符串、链表、关联数组、正规表达式等功能,两小时搞定 。如果所有基本功能都要从头开发,那将增加多少工作量 。
所以,Andrew 大神的“实用主义”精神,是他解决问题的基本原则,即尽量复用已有的成果,凡是具备通用功能的代码,都可以考虑封装为独立的库 。

文章插图
在 C++ 发展过程中,也曾有过争论,即是在语言内增加更多新特性来扩充功能,还是通过程序库来达到目标 。最终 C++ 选择了后者,这和 Andrew 大神的积极影响也是分不开的 。
C++ 内置的容器类型也就是数组和结构体,其它诸如vector, list, stack, set, map等都是通过 STL 库来扩展的 。这个核心理念,就是语言特性可以通过库来扩充 。
这无疑给了编程语言极大的灵活性,新特性可以放在库中进行试验,迭代成熟之后即可以被吸收为标准 。而且也给广大开发者提供了参与语言发展的机会,这也是 C++ 以其无与伦比的开放性,而深受程序员们喜爱的原因 。

文章插图
Andrew 大神也对库设计给出了建议,他认为对待库设计要像语言设计一样 。他以设计一个字符串类为例,提醒我们内存检测、数据复制、隐藏实现等各个方面存在的坑,以及要注意的地方 。
推荐阅读
- 荷兰真的很开放吗?
- 2021年彩礼钱法律是如何规定的-2021年不收彩礼是真的吗-2021年彩礼钱可以不用给吗
- 氨基酸|千金难买老来瘦,老年人瘦一定就好吗?真的是越瘦越健康吗?
- 盐津铺子等薯片检出潜在致癌物-薯片致癌是真的吗
- 2021年结婚不用给彩礼是真的吗?-2021年结婚彩礼新规定-2021年结婚禁止索要彩礼
- 南京百瑞赢是真的还是假的?
- 11月疫情又来一波是真的吗-11月疫情会不会再次爆发-11月疫情还会爆发吗
- 文物|1980年的1角硬币,真的很值钱吗?
- 翡翠|帅哥瞒着女朋友花2万拿下的翡翠原石,竟切出“极品”墨翠,真的是太幸运了!
- 朴灿烈的私生活真的很乱吗-exo私生活那个最不好
