我已阅读static_cast规则。
static_cast< new_type > ( expression )
... ...
5)如果存在从new_type到表达式类型的隐式转换序列, 不包括左值到右值,数组到指针,函数到指针, 空指针,空成员指针或布尔转换,然后static_cast即可 执行隐式转换的反转;
问题有人可以为此规则解释或编写示例吗?
答案 0 :(得分:2)
这是隐式转换:
int n;
void *p = &n; // OK: int* to void* is an implicit converion
不能隐式地进行逆转换:
int *pi = p; // ERROR
但是,根据该规则,可以使用static_cast
:
int *pi = static_cast<int*>(p); // OK
该规则列出了一些无法通过static_cast
撤消的隐式转化:
bool b = p; // OK: void* to bool can be implicit
void *p2 = static_cast<void*>(b); // ERROR: can't be undone with static_cast