相关疑难解决方法(0)

未定义的行为和临时性

1)返回对临时的引用是否是未定义的行为,即使该引用未被使用?例如,该程序是否保证输出"良好":

int& func()
{
    int i = 5;
    return i;
}

int main()
{
    func();

    cout << "good" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

2)仅仅具有对不再存在的对象的引用是不确定的行为,即使该引用未被使用?例如,该程序是否保证输出"良好":

int main()
{
    int *j = new int();
    int &k = *j;
    delete j;

    cout << "good" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

3)结合这些是不确定的行为?

int& func()
{
    int i = 5;
    return i;
}

int main()
{
    int& p = func();

    cout << "good" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ undefined-behavior language-lawyer temporary-objects

14
推荐指数
2
解决办法
467
查看次数