相关疑难解决方法(0)

C++返回对局部变量的引用

如果必须返回i,以下代码(func1())是否正确?我记得在某处读到返回对局部变量的引用时存在问题.它与func2()有什么不同?

int& func1()
{
    int i;
    i = 1;
    return i;
}

int* func2()
{
    int* p;
    p = new int;
    *p = 1;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

c++

102
推荐指数
2
解决办法
10万
查看次数

返回引用与返回值C++之间的差异

关于为什么有必要从函数返回引用的问题.

以下代码行为完全相同,如果我们替换int&为intline9和line16.

在我的示例代码中是真的,返回引用与值无关紧要吗?在什么样的例子中,它将开始重要?

在我看来,我们无法返回函数的局部变量的引用,因为局部变量将超出调用者的范围.因此,返回调用者可以看到的变量的引用(在范围内)才有意义,但是如果函数的调用者可以看到变量,那么它不需要返回(?)(或者这是返回的)是为了保持代码干净整洁?)

相关链接:返回引用是个好主意吗?

#include <iostream>
using namespace std;

class myClass{
private:
    int val;
public:
    myClass(int);
    int& GetVal();
};

myClass::myClass(int x){
    val = x;
}

int& myClass::GetVal(){
    return val;
}

int main()
{
    myClass myObj(666);
    cout << myObj.GetVal() << endl;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ reference

2
推荐指数
1
解决办法
3255
查看次数

标签 统计

c++ ×2

reference ×1