我有以下代码:

#include <iostream>

void f(int &x) {
    x = 5;
}

int main() {
    int x;
    f(x);
    std::cout << x << std::endl;
    return 0;
}

此代码是否在C++中调用未定义的行为? g++会在没有任何警告的情况下对其进行编译,并且该代码会打印出5(如预期的那样?)。

最佳答案

此代码中没有未定义的行为。在为分配值之前,先使用一个未初始化的变量来定义它是不确定的,但是它是明确定义的,它可以绕过引用并通过引用执行赋值。

10-06 05:30
查看更多