《从缺陷中学习C/C++》——6.14 正确使用引用参数和引用返回值

本节书摘来自异步社区出版社《从缺陷中学习C/C++》一书中的第6章,第6.14节,作者: 刘新浙 , 刘玲 , 王超 , 李敬娜 , ,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.14 正确使用引用参数和引用返回值

从缺陷中学习C/C++
代码示例

int &add(int n, int m) 
{ 
  n = n + m;
  return n;
}
int main()
{
  int  i = 10;
  int b = add(i, 1);
  cout << b << endl;
  return 0;
}

现象&后果
预期的输出结果是11,但实际输出的结果不确定。

Bug分析
add函数是一个函数引用,而add函数的返回值是形参n,形参是函数内的局部变量,函数执行结束之后,函数内的局部变量就被销毁,内存空间就被收回。因此,add函数返回的内存单元中的值就不确定,b的内容就不确定。正确方法是:确保返回的内存空间不会随着函数的调用结束、被回收。

正确代码

int &add(int &n, int m) 
{
  n = n + m;
  return n;
}
int main()
{
  int  i = 10;
  int b = add(i, 1);
  cout << b << endl;
  return 0;
}

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

上一篇:简单使用packetbeat


下一篇:mysql基于BLACKHOLE复制基础的各种架构