Class CFather
{
}
Class CSon : CFather
{
}CFather  mF;
CSon     mS;CFather* pF;
CSon*    pS;请问,以下的语句哪个是正确的或是安全的?为什么?
pF = &mS;
pS = &mF;

解决方案 »

  1.   

    也就是说 pF = (CFather*)&mS 是安全的是吧?
    那么pF可否访问CSon中新定义的成员吗?
      

  2.   

    Class CFather
    {
    }
    Class CSon : CFather
    {
       int m_nSon;
    }CFather  mF;
    CSon     mS;pS = &mF;
    int nErr = pS ->m_nSon;//这里出错了,不安全
    反之,则安全
      

  3.   

    我做过试验了:
    pF = (CFather*)&mS; pF是不能访问CSon新定义的成员的。
    pS = (CSon*)&mF; 当pS试图访问CSon新定义的成员时编译通过,但是是不安全的。
    谢谢各位!