codecamp

C++ 对象和函数

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

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

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

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

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

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

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

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

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

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

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

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

C++ 术语表
C++ print
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }