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