是Type name = name; 在C++中有用吗?

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)

可能.

有许多地方语言语法不禁止无用的结构.:-)