《深入浅出MFC》中的一个类型转换问题
第3章Persistence一节中,有这样一段代码
CRuntimeClass* PASCAL CRuntimeClass::Load(CArchive& ar, UINT* pwSchemaNum)
{
WORD nLen;
char szClassName[64];
CRuntimeClass* pClass;
ar >> (WORD&)(*pwSchemaNum) >> nLen;
if (nLen >= sizeof(szClassName) || ar.Read(szClassName, nLen) != nLen)
return NULL;
szClassName[nLen] = '\0';
for (pClass = pFirstClass; pClass != NULL; pClass = pClass->m_pNextClass)
{
if (lstrcmp(szClassName, pClass->m_lpszClassName) == 0)
return pClass;
}
return NULL;
}
第4行中把*pwSchemaNum强制转换为WORD类型的引用,在C++中第一次看到这样的用法,联想到C#的boxing机制...难道直接写成(WORD)(*pwSchemaNum)不可以吗
有知道的高手请讲讲这种转换的目的和内部机制