• 2006-10-13

    inside the c++ object model 点滴一 - [C&C++]

        发现读了这本书才知道什么是c++,或许有点言重,不过真的是一本不错的书
     
        关于c++的对象模型,很多人认为程序为此付出了空间上的代价和复杂性,其实不然,只有当支持某些特性时才会出现比较复杂性。
        当我们声明一个对象时,编译器为此生成一个 class object,而此object只包含了nostatic-member 和相应的指针(如 vptr) ,而一切static-member 和 static or nostatic function 都在object之外.
        这就说明,如果class obect 不包含virtual function 或者 drived from virtual base class ,那么和c的struct机会是一样的.因此也不存在效率上的问题.
    c++为了支持"运行时绑定",而增加了virtual function 特性,使得程序额外的增加指针(vptr) 和  vtbl ( virtual table) 存放虚函数的指针表.
        c++的对象模型如下:
       
      对于动态运行绑定也只有在指针(point)或者引用(reference)才能够支持.

    分享到: