gpt4 book ai didi

c++ - Most Vexing Parse 的目的是什么?

转载 作者:IT老高 更新时间:2023-10-28 22:26:22 29 4
gpt4 key购买 nike

开启 Wikipedia我发现了这个:

A a( A() );

[This] could be disambiguated either as

  1. a variable definition of class [A], taking an anonymous instance of class [A] or
  1. a function declaration for a function which returns an object of type [A] and takes a single (unnamed) argument which is a function returning type [A] (and taking no input).

Most programmers expect the first, but the C++ standard requires it to be interpreted as the second.

但是为什么呢?如果 C++ 社区的大多数人都期望前一种行为,为什么不将其作为标准呢?此外,如果您考虑到解析的歧义,上述语法是一致的。

有人可以请教我吗?为什么该标准将其作为一项要求?

最佳答案

假设 MVP 不存在。

你会如何声明一个函数?

A foo();

将是一个变量定义,而不是一个方法声明。你会介绍一个新的关键字吗?函数声明的语法会更尴尬吗?或者你更愿意拥有

A foo;

定义一个变量并

A foo();

声明一个函数?

您稍微复杂的示例只是为了与这个基本示例保持一致。 “所有可以解释为声明的东西都将被解释为声明”而不是 “所有可以解释为声明的东西都将被解释为声明,这更容易说,除非它是单个变量定义,在这种情况下它是一个变量定义".

可能虽然不是它背后的动机,但它是一个的事情的原因。

关于c++ - Most Vexing Parse 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077608/

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