gpt4 book ai didi

c++ - 像 int (x) 这样的声明的目的是什么?或 int (x) = 10;

转载 作者:IT老高 更新时间:2023-10-28 12:30:58 27 4
gpt4 key购买 nike

如果您查看 §8/4 中 *declarator*s 的语法,您会注意到 noptr-declarator 可以可以写成(ptr-declarator),即可以写成(declarator-id) ,它验证标题中的声明。事实上,这段代码编译没有问题:

#include <iostream>
struct A{ int i;};
int (x) = 100;
A (a) = {2};
int main()
{
std::cout << x << '\n';
std::cout << a.i << '\n';
}

但是在声明中不涉及指针(指向数组或函数)时,允许使用这些括号的目的是什么?

最佳答案

这条规则适用于你的情况并不是故意的:它最终是保持语法简单的结果。没有理由禁止像您这样的声明,但有很大的抑制因素使规则复杂化,尤其是当这些规则错综复杂时。

简而言之,如果您不想使用这种不必要的混淆语法,请不要使用。
C++ 很少强制你编写可读的代码。

令人惊讶的是,在某些情况下,括号可以节省时间:

std::string foo();

namespace detail
{
int foo(long); // Another foo

struct Bar
{
friend std::string ::foo(); // Doesn't compile for obvious reasons.

friend std::string (::foo)(); // Voilà!
};
}

关于c++ - 像 int (x) 这样的声明的目的是什么?或 int (x) = 10;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832321/

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