gpt4 book ai didi

C++ - 引用成员的默认初始化 - 这甚至如何工作?

转载 作者:太空狗 更新时间:2023-10-29 20:58:36 26 4
gpt4 key购买 nike

引用变量的默认初始化在 GCC 4.8 中会产生错误,但以下内容似乎可以编译并工作而没有任何警告/错误。

struct Foo {
int &bar;

Foo(): bar(bar) { }
};

int main () {
Foo foo;
cout << foo.bar; // prints 0
return 0;
}

这是如何编译的?我对这一行感到特别困惑:

Foo(): bar(bar) { }

最佳答案

它不起作用,这是未定义的行为。

它之所以能够编译,是因为一般来说,您可以在其初始化程序中引用一个变量。这可以有有效的用途:

void * p = &p;

但在大多数情况下会导致 UB。如果您启用了足够多的警告,您应该会收到有关使用未初始化值的警告。在 GCC 中,-Wuninitialized(或 -Wall)应该这样做。

关于C++ - 引用成员的默认初始化 - 这甚至如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com