gpt4 book ai didi

c++ - 类型别名中的详细类型说明符

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:06 25 4
gpt4 key购买 nike

为什么下面的代码没有硬错误?类型别名和类名完全相同(编译器clang):

using S = struct S;

struct S {};

S s;

int main()
{
}

以下代码(符号或类型别名)中变量的定义究竟使用了哪个名称?

using S = struct S {};

int main()
{
S s;
}

最佳答案

下面的代码使 S 成为名为 Sstruct 的别名。 using S 将名称 S 重新定义为 struct S 的别名。

using S = struct S;

下面一行定义了 struct S

struct S {};

下面的声明使用 S 作为 S 的别名,这是通过 using 做出的。

S s;

至少可以说,这类似于

using K = struct S;

struct S { S(){ std::cout << "Constructed!\n"; } };

K s;

int main()
{ }

代码将打印:

Constructed!

基本上,名称 K 将被替换为 struct S


对于你的第二个例子,它本质上与 C 的 typedef 相同:

typedef struct C {} C;

这在 C++ 中是多余的

关于c++ - 类型别名中的详细类型说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40318324/

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