今天,借助这篇文章,我们来说说编译器的函数返回值优化。本文的主要内容如下图所示:函数返回机制由于本文的主题是返回值优化,所以不得不提一下函数返回值在编译器中的实现机制,以便更好地理解其中的内容本文。函数返回值的传递分为两种情况:当返回对象的大小不超过8字节时,通过寄存器(eaxedx)返回;当返回对象的大小大于8字节时,通过栈返回。这里要注意,如果返回的是struct或class对象,即使其大小不大于8字节,也是通过栈返回的。通过栈返回的时候,栈上会有一块空间用来保存函数的返回值。当函数结束时,将要返回的对象复制到这个区域。对于内置类型,是直接拷贝,对于类类型,是调用拷贝构造函数。该区域也称为函数返回的临时对象。示例为了方便通过输出了解程序的运行状态,本文所有代码示例都展示在如下类中:classObj{public:Obj(){//constructorstd::cout<<“在Obj()中”<<“”<<这个<
