zoukankan      html  css  js  c++  java
  • 【cpp】reference & copy constructor

    最近在看thinking in cpp

    其实不是因为闲,恰恰是以为太忙了,大块的时间没有了,只有一些零碎的时间,于是用来学点自己感兴趣的东西

    今天看到reference & copy constructor这一章

    这本书果然写的很通俗易懂,扫除了我的许多以前的知识盲点。

    看到了函数的return value保存在哪个地方的这一章,觉得很有意思

    于是做了个实验,研究了一下vs2008中编译出来的汇编代码

    最后想清楚了。return value是保存在stack上的

    先保存argument,在保存return value的指针

    然后再调用cal

    为什么这么做?

    可以放return value的地方:

    1. register。不够大

    2. 放在return address的下面。即return address先入栈,然后再把return values入栈。但是很危险,可能会被ISR抢占,然后清除掉return value

    3. 在栈中单独开辟一个区域放return value。和C不兼容

    采用的办法:在当前栈的空位置中给return value分配一块地方。然后把指向这个地方的指针当做该函数的一个参数压栈。返回值就写到这个指针指向的地方

    效率高

    明天再确认一下这个事情。

  • 相关阅读:
    学好VC++的十大良好习惯
    VC6.0调试技巧
    匈牙利命名法
    VC中常用文件操作(三)
    VL_FEAT——图像处理函数库
    MATLAB——linspace
    (Your)((Term)((Project)))(字符串处理)
    Matrix Chain Multiplication(栈的简单应用)
    The Triangle(DP基础)
    MATLAB——polyfit
  • 原文地址:https://www.cnblogs.com/chenhuanfa/p/3474006.html
Copyright © 2011-2022 走看看