-6
可能性の重複参照作業を返す:このコードが動作するのはなぜ(
matrix
がクラスである)
Returning a reference can work?どのようにここに
:
const int max_matrix_temp = 7;
matrix&get_matrix_temp()
{
static int nbuf = 0;
static matrix buf[max_matrix_temp];
if(nbuf == max_matrix_temp)
nbuf = 0;
return buf[nbuf++];
}
matrix& operator+(const matrix&arg1, const matrix&arg2)
{
matrix& res = get_matrix_temp();
//...
return res;
}
buf
はここで何をやっていますそれがどうやって私たちを救うのでしょうか?ゴミ値となぜそれが宣言されたstatic
?正しく啓発してください。
元の質問に対する回答(http://stackoverflow.com/questions/8924966/returning-reference/8924994#8924994)に示されているように、それは静的であると宣言されています。それ以外の場合は、関数が完了した時点で存在しなくなり、配列内の要素への参照が無効であることを意味します。 –