正在阅读:《编程高手箴言》读后(4)《编程高手箴言》读后(4)

2004-04-08 14:39 出处:CSDN 作者:seacloud 责任编辑:sdq

  OK,编译运行之,至少在VC环境里会出现“A::sayHello()”。
  之所以要用sprintf和atoi是因为我不知道怎么把PFN转化程P_SAYHELLO,只好用这种“不干净”的代码了,呵呵:-)

  因为定义C++的类时,代码和数据都浮动。然而代码浮动是没有意义的。
=========================================
  不懂是什么意思。至于浮动代码没意义就不对了,编译出来的程序不会知道自己会被加载到虚拟空间的什么地方,于是程序里都是一些相对于程序起始地址的偏移量,一些loaders甚至在加载的时候动态修改这些代码,完成最后的定位工作。大家去看看John R. Levine的《Linkers & Loaders》就什么都明白了。

  对于同一个进程,代码当然只能有一份,因为代码不会自己改变自己的。所以,在C++中加了不能取类函数地址的限制。
=========================================
  上面给出的代码说明了可以取函数地址。至于上面这句话其中的因果关系,我还是没有能导出来。代码不会自己改变自己吗?决大多数情况下是这样,然而,一些特殊的程序,比如病毒,就完全有可能自己修改自己。其实从CPU的角度看,只要你在ring0把代码的属性改为可写,那么你想怎么改都可以:-)

  C++的设计理念是数据和代码都是浮动的,这样可以把整个对象传给一个进程活是当成一个数据类型,把这个对象从这个进程传入到另一个进程中去用。在这基础上,发展出分布对象。
=========================================
  呵呵,真的不知道当初在设计C++的时候,那个名字有点怪的大牛有没有考虑过对象的传递和分布式对象的问题。

  把对象放入另一个计算机中去进行运算,运算完成后,只需要返回运算的结果。这种理论的模型到现在还不可能都做到,就是操作系统也做不到这一点。
=========================================
  做不到?不至于吧。我想将类打包,传递,解包,实例化,计算,返回结果,这些无论从原理上还是实现上好像都没有很难跨越的鸿沟啊。我分布式对象的东东搞的很少,希望懂行的同志跟跟帖子来谈谈这个问题。

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品