示例代码:
typedef int I;
struct X{ X(int); };
int main()
{
int(int());
X(X());
I(I());
}
代码行 int(int());
使用函数转换符号,它是一个用零值初始化的临时整数。
代码行 X(X());
声明了一个名为X
的函数,不带参数并返回一个名为X
的结构体。
我的问题是:这里的I(I())
的含义是什么?标准中的哪些规则决定了这三种情况之间的差异?
示例代码:
typedef int I;
struct X{ X(int); };
int main()
{
int(int());
X(X());
I(I());
}
代码行 int(int());
使用函数转换符号,它是一个用零值初始化的临时整数。
代码行 X(X());
声明了一个名为X
的函数,不带参数并返回一个名为X
的结构体。
我的问题是:这里的I(I())
的含义是什么?标准中的哪些规则决定了这三种情况之间的差异?
I(I())
这段代码的确切含义吗? - M.Mint(int())
一样。 - eerorika
typedef int I
使I
的行为与int
完全相同。它只是分配了另一个名称。因此,行I(I())
和int(int())
具有完全相同的含义。有关typedef
的更多信息,请参见[dcl.typedef]。 - Henri MenkeX
来说,它是一个返回int
的函数I
的声明。 - Jarod42int
是关键字这一事实在第一个案例中有着至关重要的区别。 - AnT stands with Russiaint
不是一个有效的函数名称,与X
/I
相反。 - Jarod42