相关疑难解决方法(0)

从函数返回const对局部变量的引用

我有一些关于从函数返回对局部变量的引用的问题:

class A {
public:
    A(int xx)
    : x(xx)
    {
        printf("A::A()\n");
    }
};

const A& getA1()
{
    A a(5);
    return a;
}

A& getA2()
{
    A a(5);
    return a;
}

A getA3()
{
    A a(5);
    return a;
}

int main()
{
    const A& newA1 = getA1(); //1
    A& newA2 = getA2(); //2
    A& newA3 = getA3(); //3
}
Run Code Online (Sandbox Code Playgroud)

我的问题是=>

  1. 执行getA1()是否正确?我觉得它是错误的,因为它返回局部变量的地址或临时变量.

  2. main(1,2,3)中的哪些陈述会导致未定义的行为?

  3. const A& newA1 = getA1();做标准的保证,暂时由const引用约束不会被破坏,直到引用超出范围是什么?

c++ reference undefined const-reference

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

返回引用局部变量的问题

可能重复:
返回对局部变量的引用

我碰巧发现这个代码返回5.可以这样写,或者一定要避免?

   int& f() {

     int i = 5; 
     return i;
}

int main(){

    cout<<f()<<endl;    
}
Run Code Online (Sandbox Code Playgroud)

c++

-1
推荐指数
1
解决办法
547
查看次数

标签 统计

c++ ×2

const-reference ×1

reference ×1

undefined ×1