看看汇编就知道了。 内置类型在按值传参时,只是将变量的值传递到栈上。 然后被调用函数将值取出后,使用即可。 在按引用传参时,需要将被引用的变量的地址压栈, 然后被调用函数首先取出地址,然后再次根据地址寻址获取值。 相互比较 1、 按值传参少了一个取值和寻址过程,效率较高 2、 按值传参由于传递的仅仅是实参的值,因此不能在函数内修改实参的值。 有舍有得。 看场景了。 而用户自定义类型相反 按值传参的话,面临的情况较多 1、 POD类型,按值传参时需要在栈上新建一个等大小的区域,然后按位复制。 然后将栈上新变量的首地址压栈。 相比内置类型,多了好多操作。 2、 有复制控制的类型,哪别说了先在栈上开一个临时的空间,用于保存值,然后调用复制构造函数。 然后将首地址压栈。 不过怎么说, 自定义类型按值传参的话,效率低很多。 而自定义类型按引用传参的话,只是将实参的地址压栈即可。 快捷很多。
65,186
社区成员
250,526
社区内容
加载中
试试用AI创作助手写篇文章吧