返回参考如何在这里工作

时间:2012-01-19 11:33:56

标签: c++

  

可能重复:
  Returning a reference can work?

为什么此代码有效(matrix是一个类):

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请正确启发..

1 个答案:

答案 0 :(得分:0)

我无法告诉你为什么代码按原样组织,但是静态使用它会使函数退出。如果不使用static,那么它将在堆栈上分配并稍后重写。