zoukankan      html  css  js  c++  java
  • 从编译器的角度更加深入考虑封装的使用

    编译器调用虚拟函数的汇编码(参考think in c++):

      push funparam ;先将函数参数压栈

      push si ;将this指针压栈,以确保在当前类上操作

      mov bx,word ptr[si] ;因为vc++编译器将vptr放在类的第一个位置上,所以bx内为vptr

      call word ptr[bx+n] ;调用虚拟函数。n = 所调用的虚拟函数在对应 vtable 中的位置

    大型软件开发中,写代码要考虑两方面:一方面,站在开发人员的角度,写好源码,让程序运行的更高效是我们所主要考虑的。这一方面不用多讲,因为,这是最正常的考虑。另一方面,由于软件系统非常庞大,除了需要考虑程序运行的更快更好(第一方面已经做到了)之外,还要考虑build的效率。大型软件出一个build的时间是非常可怕的。那么,减少build时间的需求应运而生。这正是第二方面的考虑:如何在写代码的时候考虑减少build的时间。对于c++来说,比如virtual function, new的编译开销,对于一些highly used class,应该考虑封装这些调用到一个地方,从编译器生成的最终代码的角度考虑封装技巧的使用,从而可以有效减少编译时间。
  • 相关阅读:
    html 入门 "地表最强"干货 你值得拥有
    python信号量
    死锁 与 递归锁
    互斥锁
    进程之间的通讯
    进程与多道技术
    进程对象常用属性
    开启子进程的方式2
    牛客多校赛2K Keyboard Free
    省选刷题小记 (06~10)
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1222732.html
Copyright © 2011-2022 走看看