请你说说C++如何处理返回值?
copy elision/rvo/nrvo被你吃了?
按值返回的对象,会直接在调用方栈上构造,省略一次复制/移动(哪怕复制/移动构造函数有副作用)。比方说
vector<int> make_some_vector();
int main() {
auto vec = make_some_vector();
}正常情况下make_some_vector所返回的vector会直接在main函数栈的vec具有的栈空间上构造。
另一种情况是make_some_vector().push_back(114514),这时函数返回的值其类型是prvalue,因访问了成员被转换成xvalue,这个xvalue才是实际所谓的临时变量