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

    xiaoxiao2024-08-01  104

    本节书摘来自异步社区出版社《从缺陷中学习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; }

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

    相关资源:LINUX系统分析与高级编程技术
    最新回复(0)