sha*_*oth 15 c++ variables initialization declaration undefined-behavior
C++中允许使用以下代码:
int a = a;
Run Code Online (Sandbox Code Playgroud)
要么
Type name = name;
Run Code Online (Sandbox Code Playgroud)
两者都会导致未初始化的对象被自身初始化,这通常会导致未定义的行为.
这样的代码是否需要或合理?是否存在此类代码有用的情况?
adl*_*adl 21
这让我想起了GCC邮件列表的旧帖子,其中Gabriel Dos Reis给出了以下示例来构建单节点循环列表:
struct Node {
Node* link;
Node(Node& n) : link(&n) { }
};
int main()
{
Node x = x;
}
Run Code Online (Sandbox Code Playgroud)
Bo *_*son 17
您可以在其初始化程序中使用变量的名称.代码
Type name = name;
Run Code Online (Sandbox Code Playgroud)
可能没有用,但代码
Type name = f(&name);
Run Code Online (Sandbox Code Playgroud)
可能.
有许多地方语言语法不禁止无用的结构.:-)