std::vector<int> make() { std::vector<int> v(1000); return v; } 调用 auto r = make(); 通常不会发生昂贵拷贝,原因是?

C++

  1. A.返回值优化(RVO/NRVO)就地构造,省略不了也走移动
  2. B.vector 本身就是引用类型,返回的只是别名
  3. C.C++ 会把类类型的返回值隐式转成指针再传回
  4. D.编译器把函数内联后 v 消失,不再需要返回