-1
次のコードはなぜ機能しますか? 関数maxは、ローカル変数であるvectorのコピーへの参照を返していますが、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