> 笔记贴出后,有朋友便给我提出了一个很好的建议,原文如下:+ G. {& \' O/ Z' m' c$ k
> 简单的对象模型
>Class Point; B- A- L5 h8 }- l9 J
>float x() const; //3
> 每一个Object是一系列的Slots,每一个Slots指向一个members。</P>
> 表格驱动对象模型</P>
> 当构造对象时便会有一个类似指针数组的东西存放着类数据成员在内存中位置的指针,还有指向成员函数的指针。为了对一个类产生的所有对象实体有一个标准的表达,所以对象模型采用了表格,把所有的数据成员放在数据成员表中,把所有的成员函数的地址放在了成员函数表中,而类对象本身有指向这两个表的指针。</P>( V0 }6 f- O9 {) l9 @3 s8 j
> 为了便于理解,雷神来举个不恰当的例子说明一下,注意是不很恰当的例子 我们把写字楼看成一个类,写字楼中的人看成是类的数据成员,而每一个租用写字楼的公司看成类的成员函数。我们来看一个实体,我们叫它雷神大厦。雷神大厦的物业管理部门需要登记每个出入写字楼的人,以便发通行证,并且需要登记每个公司的房间号,并制作了一个牌子在大厅的墙上。实际上这便是类的对象构造过程。你可以通过大厅墙上的公司列表找到任何一家在雷神大厦租房的公司,也可以通过物业提供的花名册找到任何一个出入雷神大厦的人。</P>
> 真是一个考验大家想象力的例子。(如果你有更好例子的别忘了和雷神交流一下)。</P>$ h+ k1 B* I% A4 m! D- z+ F5 |: L
> C++的对象模型2 B& H6 e4 |: C4 w @. g% O) ^
> 我们还用上面的雷神大厦举例,物业管理为了提高效率,对长期稳定的公司和人员不再登记,指对不稳定或不能确定的公司进行登记,以便于管理。" l8 D4 Y$ ]5 S5 @" u7 S9 n+ p
> 得出结论,C++对象模型和双表格对象模型相比,提高了空间和存储时间的效率,却失去了弹性。</P>4 @% C W! F3 R; L i+ }1 ]; C( F
> 试想一下,没有整个雷神大厦人员和公司的名录,如果他们发生变化,则需要物业管理部门做很多工作。重新确定长期稳定的公司和人员是那些。对应应用程序则需要重新编译。(这次更离谱,但为了保持连贯,大家请进行理解性的思考,不要局限字面的意思)</P>9 N% K6 _6 |' P- Y' J+ \. Q- [! o
> 这篇笔记是分成多次一点点写的,甚至每天抽出一个小时都不能保证(没办法最近实在忙),因此可能会有不连贯,如果你读起来很不爽认为雷神的思维短路了,那属于正常。不过雷神还是再上传之前努力的将思路进行了一下整理。希望能把这些支言片语串起来。</P>* e$ \/ |4 P3 X% I
> 最后说一句阅读《深入C++对象模型》一书感觉没有什么可以被成为重点的东西,感觉每一个字都不应该放过,全是重点。经过反复阅读,雷神好象有些开窍,继续努力呀,我和大家都是。</P>
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |