static_cast可實現,
? ? 1 基本類型之間的轉換
? ? 2 void指針轉換為任意基本類型的指針
? ? 3 用于有繼承關系的子類與父類之間的指針或引用的轉換
用于基本類型轉化時,會損失精度類似于C語言的強制轉化;
下面先看一下void指針的轉換;
void CCastView::OnDraw(CDC* pDC)
{CCastDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;int *a = new int(1);void *v = static_cast<void *>(a);int *p = static_cast<int *>(v);*a=2;str1.Format("%d", *a);pDC->TextOut(30,30,str1);str1.Format("%d",*p);pDC->TextOut(30,60,str1);str1.Format("%p",a); pDC->TextOut(30,90,str1);str1.Format("%p",p);pDC->TextOut(30,120,str1);
}
a是指向int類型指針,一開始 *a = 1;
然后轉換a得到v,轉換v得到p;
再改變*a為2;
輸出如下;
*a和*p是一個;a和p相同;
%p格式化符用于輸出地址;?