zoukankan      html  css  js  c++  java
  • 完美一道试题

    看论坛上有人问了完美的一道题,挺有意思:

    class classA 
    {   
    public:   
         classA()   
         {   
             clear();   
         }   
         virtual ~classA()   
         {   
         }   
         void clear()   
         {   
             memset(this , 0 , sizeof(*this));   
         }   
         virtual void func()   
         {   
             printf("func
    ");   
         }   
    };   
    class classB : public classA   
    {   
    };   
        
    int main(void)   
    {   
         classA oa;   
         classB ob;   
         classA * pa0 = &oa;   
         classA * pa1 = &ob;   
         classB * pb = &ob;   
        
         oa.func();         // 1   
         ob.func();         // 2   
         pa0->func();       // 3   
         pa1->func();       // 4   
         pb->func();        // 5   
        
         return 0;   
    }   

    函数执行结果:

    func          func        执行出错          func          func 

    试解释原因。

    1 2 对,因为不会引发虚函数动态绑定, 3不对因为oa里面的虚指针为NULL, 4 5 对因为ob 里面的虚指针是对的,因为先构造基类,后构造派生类,构造派生类的时候初始化虚指针。 

  • 相关阅读:
    Finding Palindromes POJ
    吉哥系列故事——完美队形II HDU
    Period II FZU
    生日礼物&&Supermarket
    炮兵阵地[状态压缩DP]
    最小表示法 P1368
    Period
    最长异或路径
    Luogu P5490 扫描线
    解方程
  • 原文地址:https://www.cnblogs.com/theCambrian/p/3392093.html
Copyright © 2011-2022 走看看