Oracle Solaris Studio 12.2:C++ 用户指南

9.4.2 在不同的处理器上直接传递类

C++ 编译器直接传递的类(和联合)与 C 编译器传递结构(或联合)完全相同。不过,C++ 结构和联合在不同的体系结构上进行不同的传递。

表 9–1 在不同体系结构上结构和联合的传递

体系结构  

说明  

SPARC V7/V8 

通过在调用方内分配存储并将指针传递到该存储,传递并返回结构和联合。(也就是说,所有的结构和联合都通过引用传递。) 

SPARC V9 

不超过 16 个字节(32 个字节)的结构在寄存器中传递。通过在调用方内分配存储并将指针传递到该存储,联合和所有其他结构将被传递并返回。(也就是说,小的结构在寄存器中传递,而联合和大的结构通过引用传递。)因此,小值类与基元类具有相同的传递效率。 

x86 平台 

结构和联合通过在堆栈上分配空间并将参数复制到堆栈上来传递。通过在调用程序的帧中分配临时对象并将临时对象的地址作为隐式的第一个参数传递,返回结构和联合。