繁体   English   中英

在C ++中,返回变量会怎样?

[英]In C++, what happens when you return a variable?

返回变量时,将逐步执行操作。 我知道,如果它是内置的并且适合,则会被扔到rax / eax / ax中。 如果它不合适和/或不是内置的,会发生什么? 更重要的是,是否有保证的复制构造函数调用?

编辑:析构函数如何? 是“有时”,“总是”还是“从不”?

返回值的存储位置完全取决于调用约定 ,并且特定于体系结构和系统。

允许编译器取消对副本构造函数的调用(即,它不必调用副本构造函数)。 请注意,根据函数的返回值执行的操作,从函数返回值也可能会调用赋值运算符。

如果函数/方法的返回类型是引用,则实际上不会进行任何复制。 如果它是非引用返回类型,则可能会根据您的平台的调用约定进行复制。

在寄存器丰富的(通常为RISC)体系结构中,可能会有大量的寄存器分配来容纳适度的大型返回构造。 这是为了避免过多的内存事务,而这些事务与高速缓存/寄存器事务相比是昂贵的。

在您提到的寄存器暗示的问题上,x86降序的intel系列比RISC调用复制构造函数的可能性更大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM