美文网首页
对象传递

对象传递

作者: Justin_901e | 来源:发表于2019-07-18 11:41 被阅读0次

一、对象作为函数参数

      对象作为函数参数时,其传递过程较为复杂,传递方式比较独特。其伟参数过程和数组不同。传参时不会像数组那样以首地址作为参数传递,而是先将对象中的所有数据进行备份(复制),将复制的数据作为形参传递到调用 函数中使用。

       在基本的数据类型中,除又精度浮点外,其他所有数据类型在32位下都不超过4字节,使用一个栈元素即可完成数据的复制和传递。值参顺序: 最先定义的数据成员最后压栈,最后定义的数据成员最先压栈。

     在对象作为函数参数时,会复制对象并传递,在某些情况下会调用 特殊的构造函数--拷贝构造函数。当函数退出时,复制的对象作为函数内的局部变量,将会被销毁。当析构函数存在时,则会调用 析构函数。

二、对象作为返回值

    对象作为函数返回值时,与基本类型不同。基本类型作为返回值时,通过寄存器eax来保存返回的数据,而对象属于自定义类型,寄存器eax无法保存对象中的所有数据,所以在函数返回时,寄存吕eax不能满足要求 。

   对象作为返回值与对象作为参数的处理方式非常相似。对象作为参数时,进入函数前预先将对象使用栈空间保留出来,并将实参对象中的数据复制到栈空间中。该栈空间作为函数参数,用于函数内部使用。同理,对象作为返回值时,进入函数后将申请返回对象使用的栈空间,在取出函数时,将返回对象中的数据复制到临时的栈空间中,以这个临时栈首地址作为返回值。

相关文章

  • 值传递和引用传递

    对象被值传递,意味着传递了对象的一个副本。所以改变的是对象的副本,而非源对象值。 对象被引用传递,传递的并不是实际...

  • 面试考点

    1、Android Intent之传递带有对象的集合(Serializable传递对象和对象集合) [https:...

  • 8.7 Intent2

    Intent传递简单数据 Intent传递数组 Intent传递集合 Intent传递对象 1.将对象转换为Jso...

  • Activity之间通过Intent传递对象

    Android Activity之间通过Intent传递对象 在Activity之间传递对象,这个对象须是可以序列...

  • javaCPP与ByteBuffer

    javaCPP命令 传递ByteBuffer 传递JNIENV对象

  • iOS 基础知识

    1. 值传递和引用传递的区别? 所谓值传递,就是说仅将对象的值传递给目标对象,就相当于copy;系统将为目标对象重...

  • uni-app路由传参(传递对象 )

    uni-app路由传参(传递对象 ): 遇到需要在navigaor组件中传递对象参数到下一个页面的需求,传递对象时...

  • 猎头最爱问的java面试题附答案(一)

    1.什么是值传递和引用传递? 对象被值传递,意味着传递了对象的一个副本。因此,就算是改变了对象副本,也不会影响源对...

  • 小程序通过navigateTo页面跳转url传递对象

    url 传递时是字符串格式,因此在传递前要将对象转为字符串,传递后再将字符串转为对象 对象转字符串再传递JSON....

  • java的String值传递还是引用传递

    java值传递还是引用传递 一般可以这样认为基础类型是值传递,而对象封装是引用传递 对于test。传入对象,以后都...

网友评论

      本文标题:对象传递

      本文链接:https://www.haomeiwen.com/subject/baaclctx.html