阁下:
   不关是C++还是DELPHI还是别的面向对象的编程语言,在这里我提出一个问题,这个问题如下:
   类在被编译完后,或在别创造对象之前,它在内存中是怎么样被存储的,或它在内存中的存贮结构是什么样的?类方法是怎样被调用的,调用机制是什么?请各路英雄,不要肤浅地回答它,要深入事物的本质?谢谢!

解决方案 »

  1.   

    变量和结构体相同
    方法则是被编译成普通函数的样子,隐含了this指针而已
    不过对于虚函数编译后的内容就分成两种情况:
    1.作为指针变量保存在结构体空间中
    2.固定作为指定方法编译成函数类型
      

  2.   

    谢谢你的解答
    请原谅我的冒失,我想进一步探讨这个问题当然都是计算机科学或软件的基本问题:
    比如如下语句:argument:type;(argumet是变量,type是数据类型,包括简单类型和复杂类型)
    在这里我们没有对其初始化,当程序通过编译后,编译器是否为变量分配了内存?我想是分配了的,当这个变量被某个函数引用时,在引用之前必须对其初始化。当然在出里其生存域后,变量所占有的空间将被释放,那么请问这种释放的机制是什么?你能帮我解答吗?
        如果argument是对象变量,那么情况又是怎样的呢?在C++中构造函数是在对象声明时自动调用,如果C++的构造函数没有传递参数,那么对象是否被初始化,编译器是否为对象的数据域或函数域分配空间。而对于Object Pascal当这样的声明是不会调用构造函数的,我们必须手工构造,那么在这种情况下,编译器是否为argument的各字段分配空间?当然argument只是一个指针或句柄。
        对于类的问题如下:我们把类的代码写入我们的应用程序,如果我们的类没有创建实例,那么通过编译后,编译器是否为我们的类分配空间,如果分配,那么这样的空间的结构是什么样子(和对象比较如何)?我是通过什么方式访问这个空间,该域的句柄是什么?类名是否就是指向该域的指针?请阁下回复!谢谢!
                                                                         细胞凋亡 
                                                                           2004。12。5
      

  3.   

    呵呵!好专业啊~~MARK一下如果我们的类没有创建实例,那么通过编译后,编译器是否为我们的类分配空间?在Delphi中不会。
      

  4.   

    朋友,在DELPHI中,没有为类分配空间,那么用类名调用类方法是怎么回事?
    你能告诉我吗?
      

  5.   

    类调用类方法在C++中是没有的,在DELPHI中有这样的应用,如果感兴趣,请各位弄清楚这个问题,有时候这些问题是否弄彻底成了我们在编程领域进级的瓶颈,你说是这样的吗?
      

  6.   

    我见意你看一下,参透DELPHI/kylix,铁路出版社出的,第7章就你说的动态联编问题说的很清楚了
    网上也有此本电子图书的
      

  7.   

    类调用类方法在DELPHI中有这样的应用吗?给个例子吧
    邮箱是[email protected]
      

  8.   

    在构造对象之前,对象还不存在,只存在类,创建对象只能用类方法在传统的C++语言中,可以实现虚析构函数,但实现虚构造函数却是一个难题。因为,在传统的C++语言中,没有类的类型。全局对象的实例是在编译时就存在于全局数据空间中,函数的局部对象也是编译时就在堆栈空间中映射的实例,即使是动态创建的对象,也是用new操作符按固定的类结构在堆空间中分配的实例,而构造函数只是一个对已产生的对象实例进行初始化的对象方法而已。传统C++语言没有真正的类方法,即使可以定义所谓静态的基于类的方法,其最终也被实现为一种特殊的全局函数,更不用说虚拟的类方法,虚方法只能针对具体的对象实例有效。因此,传统的C++语言认为,在具体的对象实例产生之前,却要根据即将产生的对象构造对象本身,这是不可能的。的确不可能,因为这会在逻辑上产生自相矛盾的悖论!
    然而,正是由于在DELPHI中有动态的类的类型信息,有真正虚拟的类方法,以及构造函数是基于类实现的等等这些关键概念,才可实现虚拟的构造函数。对象是由类产生的,对象就好象成长中的婴儿,而类就是它的母亲,婴儿自己的确不知道自己将来会成为什么样的人,可是母亲们却用各自的教育方法培养出不同的人,道理是相通的。
    正是在TComponent类的定义中,构造函数Create被定义为虚拟的,才能使不同类型的控件实现各自的构造方法。这就是TClass创造的类之类概念的伟大,也是DELPHI的伟大。
    (DELPHI原子世界)
    没看得太明白,大家来看看啊~~
      

  9.   

    借楼主宝地一用,散分:
    http://community.csdn.net/Expert/topic/3607/3607806.xml?temp=.9890863