使用reinterpret_cast在不相關的指針類型之間進行投射。
使用static_cast進行顯式支持的轉換。
使用dynamic_cast將一種類型的指針轉換爲派生類型的指針。
如果您知道指向父類型的指針指向子類型,則可以安全地將父類型的static_cast安全地指向子類型。從子類型指針到父類型指針的轉換是隱式的,不需要顯式轉換。
一個從我自己的代碼庫的reinterpret_cast例如:
unsigned int CTaskManager::CWorker::WorkerMain(void* Parameters)
{
CWorker* This = reinterpret_cast<CWorker*>(Parameters);
// ...
}
bool CTaskManager::CWorker::Initialize()
{
// ...
// Create worker.
m_ThreadHandle = reinterpret_cast<HANDLE>(_beginthreadex(NULL, 0, &(WorkerMain), this, 0, NULL));
// ...
}
重複的[?爲什麼我們在C++的reinterpret_cast當兩分鏈式的static_cast可以做的工作(http://stackoverflow.com/questions/ 5025843 /爲什麼-DO-我們具備的,重新詮釋 - 現澆C-當兩鏈靜態鑄造燦-DO-其-J)。基本答案是:因爲其他演員表達式無法完成的事情。 – 2011-03-04 04:39:55
請參閱本主題:[爲什麼當兩個鏈接的static_cast可以完成它的工作時,我們在C++中使用reinterpret_cast](http://stackoverflow.com/questions/5025843/why-do-we-have-reinterpret-cast-in- c-when-two-chained-static-cast-can-do-its-j) – Nawaz 2011-03-04 04:40:14
@James::D .... – Nawaz 2011-03-04 04:40:48