1. 简介
我们对传递数值或变量给函数都很熟悉,除了传递变量,我们还能传递类型给模板。传递类型就是大家所熟知的泛型编程,因为 我们可以用泛型编写程序,而用特定的类型调用。
泛型编程的目的是为了编写的程序不依赖于数据类型。在 C 语言中,所有的代码都需要绑定到确定的数据类型,这样写的代码只能对特定的数据类型起作用。 而模板可以让我们实现泛型编程。你可以将类型作为参数来构建模板函数和类模板。当你的算法需要作用于多种数据类型的时候,模板就显得及其有用了。
C++的标准模板库(STL)提供了一些常用的容器类模板的实现,例如vector
,可以用来存放所有类型的元素。
2. 示例:STL 中的 vector 类模板
C/C++中的内置数组有...
指针,引用和动态分配内存是 C/C++语言中最强大的特性,这些特性使得程序员能够直接操作计算机中非常珍贵的记忆体资源,进而对内存进行最大性能和高效的使用。 然而指针也是一把双刃剑,它也是 C/C++编程语言中最复杂和最难的特性。
指针之所以这么强大,是因为它允许你通过地址来访问和操作对应记忆体中存储的内容。但是指针也很难被驾驭,使用好的话确实能够大大提升性能,而用的 不好的话,也会导致很多问题,例如著名的内存泄漏和缓冲区溢出,这些 bug 会致使系统发生紊乱。一些新的编程语言(例如 Java 和 C#),将指针从它的语法 中去掉,通过提供自动内存管理的方式来避免使用指针导致的许多问题。
虽然你在编写 C/C++代码的时候可以不使用指...
1. 为什么要使用 OOP?
假如你想组装一台电脑,你会去硬件商店购买主板、处理器、内存条、硬盘、机箱、电源,然后将它们组装在一起,然后打开电源,电脑就能运行。 你不用考虑主板是 4 重板还是 6 重板,硬盘是什么尺寸,内存是哪里生产的诸如此类的问题。你只需要将这些硬件单元组合在一起,就能期待电脑能够运行。 当然,你需要保证你有正确的接口,比如,如果你的主板只支持 IDE 接口,而你需要购买一个 IDE 的硬盘而不是 SCSI 硬盘,又例如你需要选择一个合适速率的 内存。即便如此,将硬件组件组装成一台机器也没有任何难度。
同样的,一辆车也是由多个部分组装起来的,例如底盘、车门、引擎、车轮、刹车和传动装置。这些组件都是可复用的。比如...