11.1 对象和函数

优质
小牛编辑
136浏览
2023-12-01

通常认为C++是一种面向对象编程语言,这意味着它提供了支持面向对象编程的特性。

定义面向对象语言并非易事,但是我们已经看到了它具备的一些特性:

1.程序由一些结构定义和函数定义组成,大多数函数操作特定类型的结构(或者对象)。

2.每个结构定义对应着一些现实世界中的物体或概念,对结构进行操作的函数对应着现实世界中物体交互的方式。

例如,我们在第九章中定义的Time结构体明显对应着人们记录每天时间的方式,而我们定义的操作对应着人们记录时间所做的事情。类似地,Point和Rectangle结构体对应于数学概念上的点和矩形。

然而,迄今为止,我们还没有利用C++提供的支持面向对象编程的特性。严格来说,这些特性并非必要。在很大程度上,它们为我们所做的事情提供了另一种语法,但在许多情况下,这种语法能更加简明和精确地传达程序的结构。

如Time程序中,结构体定义和函数定义没有明显的联系。通过一些研究发现,每个函数显然应当至少将一个Time结构体作为参数。

这种观察结果是成员函数的动机。成员函数区别于另外我们写过的另两种函数:

1.调用函数时,我们不是直接调用,而是通过对象调用它。人们通常将这种过程描述成“对一个对象执行操作”或者“给一个对象发送消息”。

2.函数在结构体定义中声明,以使结构和函数之间的关系更加明显。

在后面几节中,我们会从第九章中拿出一些函数,并把它们转化成成员函数。你应该意识到这种转换是纯机械的。话句话说,你只需遵循一系列步骤就能完成。

如我所说,任何成员函数能做的事情,也能用非成员函数(有时称为独立函数)完成。但有时其中一种会优于另一种。如果你能很自然地从一种形式转换到另一种,那么你就能为你做的事情选择最好的形式。