在C++中,返回变量时会发生什么?

Cla*_*bel 0 c++ return-value copy-constructor

返回变量时,一步一步地发生了什么.我知道如果它是内置的并且适合,它会被抛入rax/eax/ax.当它不适合和/或不是内置时会发生什么?更重要的是,是否有保证的复制构造函数调用?

编辑:析构函数怎么样?那被称为"有时","总是"还是"从不"?

Jam*_*lis 7

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

允许编译器忽略对复制构造函数的调用(即,它不必调用复制构造函数).请注意,从函数返回值也可能会调用赋值运算符,具体取决于函数返回值的作用.