-1
爲什麼下面的代碼有效? 函數max正在返回一個向量副本的引用,它是局部變量,但它返回19(這是正確的答案)。 我用QtCreator 3.5.0爲什麼在這段代碼中引用局部變量返回?
#include <iostream>
#include <vector>
template <class T>
T& max(std::vector<T> array)
{
T& result = array[0];
for (size_t i = 1; i < array.size(); i++)
{
if (result < array[i])
{
result = array[i];
}
}
return result;
}
int main()
{
std::vector<int> testVector;
for (size_t i = 0; i < 20; i++)
{
testVector.push_back(i);
}
std::cout << max(testVector) << std::endl;
}
你只是幸運 - 不要依賴它 –
如果違反規定,你可能會入獄或者你可能不會。只是不這樣做 – user463035818
@ hvd是的,對不起,我想說,它沒有返回一個矢量副本的參考。 – perencia