1,CClientDC * pdc = (CClientDC *)GetDlgItem(IDC_PICTURE)->GetDC();
遇到这样一行代码,GetDlgItem(IDC_PICTURE)->GetDC()返回的是CDC *,是CClientDC的基类,也就是说通过强制转化可以把基类指针强制转换为派生类指针。紧接着,
2,m_Dib.Draw((CDC*)pdc,m_Dib.m_lpData,CPoint(0,0),CSize(m_Dib.GetWidth(),m_Dib.GetHeight()));派生类的指针又被强制转换为基类指针。甚至
m_Dib.Draw(pdc,m_Dib.m_lpData,CPoint(0,0),CSize(m_Dib.GetWidth(),m_Dib.GetHeight()));说明了在公有派生的情况下,派生类的指针可以直接赋值给基类指针。就是可以把派生类指针当成基类指针用。
3,以前就知道的,基类指针可以指向派生类对象