Answers:
int i = 1;
Test val = static_cast<Test>(i);
auto
在这种情况下可以使用什么?是否有任何性能改进?
Test e = static_cast<Test>(1);
您的密码
enum Test
{
A, B
}
int a = 1;
解
Test castEnum = static_cast<Test>(a);
static_cast
在这里会更好。
static_cast
,但也可以等于a const_cast
或什至更糟,reinterpret_cast
或者甚至是它们的组合。即使您现在知道它会降级什么,假设以后再更改a
为另一种类型,也很可能是强制转换的类型,而您却没有得到警告的全部,您也不希望这样。
分拆收盘问题,“我怎么转换为类型Test::A
”,而不是死板的要求有一个投在里面,并回答了几年后期只是这似乎成为一种流行的问题,其他人似乎已经提到的替代,按照C ++ 11标准:
5.2.9静态转换
... 对于某些发明的临时变量(8.5),如果声明格式正确,则
e
可以T
使用static_cast
形式的a 将表达式显式转换为类型。这种显式转换的效果与执行声明和初始化,然后将临时变量用作转换结果的效果相同。static_cast<T>(e)
T t(e);
t
因此,直接使用表单t(e)
也可以,并且您可能更喜欢它的简洁性:
auto result = Test(a);