弄浪的鱼

STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统 称。现在主要出现在 c++ 中,但是在引入 c++ 之前该技术已经存在很长时间了。

STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator),容器和算法之 间通过迭代器进行无缝连接。STL 几乎所有的代码都采用了模板类或者模板函数,这相比传 统的由函数和类组成的库来说提供了更好的代码重用机会。

C/C++ 中的 main 函数经常带有 argc, argv ,比如 int main(int argc, char** argv) 或者 int main(int argc, char* argv[]),其中 argc 表示我们从命令行键入的参数,argv[] 即为参数列表。

Java 中的 public static void main(String argc[]) 和 Python 中的 sys.argv 中也都带有命令行参数。

通过命令行参数我们可以就能由 main 函数入口传递参数到程序内部。

面向对象有三个特性:封装继承和多态。实现一个类就是实现了一个对象的封装。继承是为了表示对象和对象之间的关系,生物学中有界门纲目科属种的说法,比如说喜鹊、麻雀、燕子它们有各自的特性,可以将它们看成一个个类,它们都属于鸟类,因为它们有鸟类共同的特征,会飞啊、有羽毛的啊。

继承就是抽象出对象的共性成为一个父类,子类用继承的方式获得父类的共性,并且子类有权拥有自己的个性,也能对父类的共性做个性化的修改。

本文并不详细介绍继承的概念,而是记录继承中一些关键点和注意事项。

静态变量、静态方法和 this 指针都是为了更好表现类的概念。

类中的静态变量能够实现同类对象中的信息共享,共享状态能够实现许多实用的功能,比如说计数。

静态变量不能用普通函数直接访问,就需要用到静态函数来管理静态变量。

this 指针用 this->name = name 的形式解决类中函数传入的参数与类中成员变量冲突的问题。

总之,通过代码来说明问题更容易理解。

C++ 引入了面向对象的概念,面向对象的思想能够抽象出现实世界的实体,以此解决更加复杂的问题。

类是面向对象的核心,类即是我们对事物抽象之后的产物。C++ 中的类用 class 关键字修饰,后面紧跟着类名 class ClassName

现实世界的实体应该怎么抽象?一部分抽象为是事物的基本属性,一部分抽象为事物的行为。以抽象一只狗为例,狗的基本属性比如说有品种、年龄、毛色、重量等,而它的行为比如说有奔跑、行走、吃东西、叫等。

类中就用变量来表示事物的基本属性,行为则用函数来表示,这就是面向对象思想的核心。在此基础上又有继承、多态等概念,也是为了进一步表现对象与对象之间的关系。

本文讲的是 C++ 中类的构造函数、析构函数以及拷贝构造函数。构造函数区别于普通的函数,是专门用来初始化一个对象的;析构函数则是在函数被销毁时自动调用做善后工作的;拷贝构造函数是另一种初始化类的方法,它直接用类来初始化一个新类。

内联函数能够将函数体直接插入在函数调用的位置,减少了函数调用时出栈、入栈的过程,提高程序性能。

默认参数与占位符让我们在定义函数的时候能够设置默认值,提高了函数定义的灵活性。

函数的重载则允许我们在参数列表不同的情况下使用同名函数,解除了 C 语言中函数名必须不同的限制。

以上都是 C++ 在 C 语言基础上对函数定义的扩展,可以放在一起进行学习。

引用格式一个已存在变量的别名,通过这个别名就可以用来修改指向的变量的值。引用和指针很像,在很多情况下就是简化版的指针。引用比指针弱的地方在于引用必须在创建时初始化,并且不能再改变指向的对象,而指针可以为空,也可以改变指向的内存地址。