我在某个库中找到了表达式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??
Run Code Online (Sandbox Code Playgroud)
这只是另一种铸造方式.(type)value并且type(value)通常是等同的.唯一的例外是当涉及的类型的名称包含两个或更多个令牌时,例如char *或unsigned long((unsigned long)x允许但unsigned long(x)不允许).
即使在这样的情况下,您也可以为该类型创建单令牌名称,并等效地使用它:
typedef unsigned long ulong;
a = ulong(x);
Run Code Online (Sandbox Code Playgroud)
无论如何,你得到的是语义上的C风格演员.大多数C++程序员一般都会避免这些,因为它们的含义可能有些含糊不清.根据用途,它可能相当于a static_cast,a reinterpret_cast,a const_cast,它们的组合,或者根本不能用新式演员表演的演员.
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |