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格式化符用于输出地址;