2
我讀過static_cast規則。static_cast的特殊規則
static_cast<new_type> (expression)
... ...
5)如從NEW_TYPE到表達式的類型的隱式轉換的序列存在, 不包括左值到右值,陣列到指針,指向函數, 空指針,空成員指針或布爾轉換,然後static_cast可以執行該隱式轉換的逆操作;
問題有人可以解釋或編寫這個規則的例子嗎?
我讀過static_cast規則。static_cast的特殊規則
static_cast<new_type> (expression)
... ...
5)如從NEW_TYPE到表達式的類型的隱式轉換的序列存在, 不包括左值到右值,陣列到指針,指向函數, 空指針,空成員指針或布爾轉換,然後static_cast可以執行該隱式轉換的逆操作;
問題有人可以解釋或編寫這個規則的例子嗎?
下面是一個隱式轉換:
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
否「爲我做作業」的問題。 – 2014-10-27 16:07:32
這不是我的作業:)我不明白這個規則。 – Khurshid 2014-10-27 16:10:00
@ Triton:這個問題沒有錯。 – 2014-10-27 17:43:59