为什么数组只能通过引用返回? 在C++中,返回数组的唯一方法是引用: int ( &unity( int (&arr)[3] ) )[3] { arr[0] = 1; arr[1] = arr[2] = 0; return arr; }

为什么数组只能通过引用返回? 在C++中,返回数组的唯一方法是引用: int ( &unity( int (&arr)[3] ) )[3] { arr[0] = 1; arr[1] = arr[2] = 0; return arr; },c++,arrays,c++11,C++,Arrays,C++11,现在使用C++11,我们在STL中有std::array。现在可以通过复制返回std::数组: 为什么我们被迫使用STL,而编译器可以具有同等的功能?为什么在C++11中数组不可能通过复制返回?这并不是说std::array可以通过值传递;这是一个包含复杂行为的类 当您按值传递std::array时,会运行一些代码,为新数组分配正确的空间并复制所有值。它不是语言的一部分,必须有人来实现实际的东西 另外,std::array和C数组不是一回事,所以不要混淆它们

现在使用C++11,我们在STL中有std::array。现在可以通过复制返回std::数组:

为什么我们被迫使用STL,而编译器可以具有同等的功能?为什么在C++11中数组不可能通过复制返回?

这并不是说std::array可以通过值传递;这是一个包含复杂行为的类

当您按值传递std::array时,会运行一些代码,为新数组分配正确的空间并复制所有值。它不是语言的一部分,必须有人来实现实际的东西


另外,std::array和C数组不是一回事,所以不要混淆它们#include <array> std::array< int, 3 > make_unity() { std::array< int, 3 > arr; arr[0] = 1; arr[1] = arr[2] = 0; return arr; }