gpt4 book ai didi

c++ - C++ 枚举类型可以作为函数调用,还是只是一种不同的转换方式?

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

我在某个库中找到了表达式 enum-type-name( integral-value ) 但我觉得它有点奇怪,它真的是它看起来的样子吗(至少对我而言)?枚举类型可以作为函数调用,还是只是另一种类型的枚举类型?或者是什么?例如:

enum SomeEnum
{
SOMETHING = 0,
OTHERTHING = 1
};

void someFunction(SomeEnum e)
{
// ...
}

someFunction( 2 ); // Invalid conversion
someFunction( (SomeEnum)2 ); // Works, Normal casting
someFunction( SomeEnum(2) ); // Works!! calling the enum as a function?? or just another style of enum casting??

最佳答案

那只是另一种类型转换方式。 (type)valuetype(value) 通常是等价的。唯一的异常(exception)是当涉及的类型的名称由两个或多个标记组成时,例如 char *unsigned long(所以 (unsigned long)x 是允许的,但 unsigned long(x) 是不允许的。

即使在这些情况下,您也可以为该类型创建一个单标记名称,并等效地使用它:

typedef unsigned long ulong;
a = ulong(x);

无论如何,您得到的是语义上的 C 风格转换。大多数 C++ 程序员通常会避免使用这些,因为它们的含义可能有些模棱两可。根据用途,它可能等同于 static_castreinterpret_castconst_cast、它们的组合,或者您可以根本不需要新式类型转换。

关于c++ - C++ 枚举类型可以作为函数调用,还是只是一种不同的转换方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16180432/

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