读Inside the C++ Object Model有感

原创 2004年07月01日 16:50:00
      今天看到Pointer-to-Member Functions一节,说到指向虚函数、多继承条件下的成员函数的函数指针时,给出了stroustrup的方案:添加一个结构以记录指针间的区别,对普通成员函数而言,取得的是成员函数的地址,而虚函数则得到该函数在虚函数表中的序号。而后又提到microsoft的一个方案,即使用thunk函数(这个词不是很确定它的翻译,虽然意思能够理解,大概类似于“桩”函数之类):对于指向普通的成员函数的指针,与原来无差别;对于虚函数指针,得到的则是一个称为“vcall”的thunk函数的指针,由该thunk函数负责实际的虚函数调用工作。它的方案仍然使用stroustrup引入的结构,但去除了结构中的index(指向虚函数表的索引值,同时也是判定是否是虚函数指针的标志),因而减小了内存消耗;同时减轻了每次通过函数指针调用时的一个附加判断(判断是否是虚函数指针):现在的普通成员函数调用没有额外开销(overhead);而虚函数调用则通过一个间接函数调用替换了判断,从开销上来说基本与原来持平。

      这其实是典型的“通过引入一个间接层解决问题”的例子。与OO思想中的“任何问题都可以通过引入一个间接层而解决”的概念不谋而合(这个例子本身虽然是解决OO实现中遇到的问题,但解决方案本身并不是OO相关的)。可见思想是相通的,OO思想不仅仅可以应用于OO领域,在其它领域也同样有可能有所作为。

《深度探索C++对象模型(Inside The C++ Object Model )》学习笔记

来源:http://dsqiu.iteye.com/blog/1669614 之前一直对C++内部的原理的完全空白,然后找到《Inside The C++ Object Model》...
  • freeking101
  • freeking101
  • 2017年03月03日 14:52
  • 1678

Inside the c++ object model读书笔记之程序转换

一、明确的初始化操作: X x0; void foo() { X x1(x0); X x2 = x0; X x3 = X(x0); } 对于该程序,必要的程序转换有两个...
  • no_Talent
  • no_Talent
  • 2014年04月01日 22:43
  • 580

读《人类简史》有感

我是从窦文涛在其节目《圆桌派》中谈人工智能的时候,了解到了尤瓦尔.赫拉里这个人的。瞬间被他像神一般俯瞰众生的视角所吸引,于是买了电子版的《人类简史》详读。前前后后,零零碎碎大概用了1周的时间,读完了整...
  • chrisjingu
  • chrisjingu
  • 2017年08月07日 17:04
  • 241

Inside the c++ object model读书笔记之拷贝构造函数(二)

在上一篇中提到编译器会在需要的时候合成一个拷贝构造函数,有以下四种情况如果没有提供显示的拷贝构造函数,编译器会合成一个构造函数,来完成一些必要的操作: 1.在一个类中,有一个类成员变量,且这个这个成...
  • no_Talent
  • no_Talent
  • 2014年03月22日 01:20
  • 680

Inside the c++ object model读书笔记之拷贝构造函数(一)

在C++中,会有三种情况以一个对象作为另一个对象的初值,分别为: 1.    class X { … }; X x; X xx = x; 2. void fun(X x); X xx; Fun(xx)...
  • no_Talent
  • no_Talent
  • 2014年03月21日 00:43
  • 613

Inside the c++ object model读书笔记之拷贝构造函数(三)

在上篇文章中总共说有四种情况,如果没有显式的声明拷贝构造函数,编译器就需要合成一个拷贝构造函数,前面介绍了两种情况,分别是有数据成员为类对象,且该类有拷贝构造函数和继承自有拷贝构造函数的类。接着介绍剩...
  • no_Talent
  • no_Talent
  • 2014年03月23日 23:33
  • 589

Inside the c++ object model读书笔记之默认构造函数

C++中在类实例化一个对象时,类的构造函数会被“自动调用”,从而完成对象的一些初始化工作。如果类没有提供显式的构造函数,我们就认为编译器会构造一个默认构造函数,而在C++annotated refer...
  • no_Talent
  • no_Talent
  • 2014年03月25日 00:08
  • 578

《Inside the C++ Object Model》关于基类与派生类的Tips

近来阅读《Inside the C++ Object Model》,里边讲到,在C++中多态只存于public class体系中,且只有通过pointer和reference来间接处理。 #inclu...
  • alex_my
  • alex_my
  • 2013年04月14日 11:33
  • 703

读《战国策》有感

---------    Lexlin 2016-6-17战国时代诸侯混战,群雄并起,各诸侯国为了各自利益,厉兵秣马、尔虞我诈。而一些个人为了争名逐利,陆续入世到这种大混战之中,于是各种谋略之士、舌辩...
  • suneastxo
  • suneastxo
  • 2016年10月09日 13:26
  • 473

【职业生涯】读《内向者优势》有感

【职业生涯】读《内向者优势》有感
  • CPPCPPCPPCPP
  • CPPCPPCPPCPP
  • 2017年01月19日 22:55
  • 426
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读Inside the C++ Object Model有感
举报原因:
原因补充:

(最多只允许输入30个字)