1. 首页
  2. 编程语言
  3. C++ 
  4. 对象细节

对象细节

上传者: 2024-07-24 00:10:41上传 PDF文件 14.32MB 热度 14次

2.7 抽象数据类型:将数据连同函数捆绑在一起,这一点就允许创建新的类型。这常常被称为封装。一个已存在的数据类型,例如 float,有几个数据块:一个指数,一个尾数和一个符号位。我们能够告诉它与另一个 floatint 相加,等等。它有属性和行为。stash 也是一个新数据类型,可以 add()fetch()inflate()。由说明 stash S 创建一个 stash 就像由说明 float f 创建一个 float 一样。一个 stash 也有属性和行为,甚至它的活动就像一个实数—一个内建的数据类型。我们称 stash抽象数据类型(abstract data type),也许这是因为它能允许我们从问题空间把概念抽象到解空间。

C++编译器把它看作一个新的数据类型,并且如果说一个函数需要一个 stash,编译器就确保传递了一个 stash 给这个函数。对抽象数据类型(有时称为用户定义类型)的类型检查就像对内建类型的类型检查一样严格。然而,我们会看到在对象上完成运算的方法有所不同。object.member_function(arglist) 是对一个对象“调用一个成员函数”。而在面向对象的用法中,也称之为“向一个对象发送消息”。这样,对于 stash S,语句 S.add(&i) “发送消息给 S”,也就是说,“对自己 add()”。事实上,面向对象程序设计可以总结为一句话,“向对象发送消息”。需要做的所有事情就是创建一束对象并且给它们发送消息。当然,问题是勾画出我们的对象和消息是什么,但如果完成了这些,C++ 的实现就直截了当了。

2.8 对象细节:这时我们大概和大多数 C 程序员一样会感到有点困惑,因为原有的 C 是非常低层和面向效率的语言。在研讨会上经常提出的一个问题是“对象应当多大和它应当像什么”。回答是“最好莫过于和我们希望来自 C 的 struct 一样”。事实上,C struct(不带有 C++ 装饰)在由 C 和 C++ 编译器产生的代码上完全相同,这可以使那些关心代码的安排和大小细节的 C 程序员放心了。并且,由于某种原因,直接访问结构的字节,而不是使用标识符,不一定是效率更高的办法。应当知道,这个术语似乎是有争议的题目。一些人就像这里的用法一样用它,而另一些人用它描述隐藏的实现,这将在第三章中讨论。

想进一步了解面向对象编程的奇妙之处?请点击精彩编程与编程技巧理解面向对象编程面向对象编程C,这些资源会让你对抽象数据类型和对象的奥妙有更深刻的理解!

如果对C语言中的面向对象编程感兴趣,可以参考面向对象编程方法C,这里有更多关于如何在C语言中实现面向对象编程的技巧与方法!

需要一些C++的具体示例和实践?C++ 面向对象编程000面向对象 这个链接包含了许多实用的示例代码和详细解释,帮助你更好地掌握C++的面向对象编程技巧!

探索更多与抽象数据类型相关的内容,请查看面向对象编程Java中的抽象数据类型。这里提供了许多关于如何在Java中使用和实现抽象数据类型的实用建议和实例。

这样,不管是C还是C++,不管是新手还是老手,面对面向对象编程的世界,都有许多资源可以帮助你一一解开其中的奥秘。

下载地址
用户评论