关于类的考题

2016/04/28 C和C++基础

求输出结果

class A
{
  public:
    A ():m_iVal(0){test();}
    virtual void func() { std::cout<<m_iVal<< ;}
    void test(){func();}
  public:
      int m_iVal;
};
class B : public A
{
  public:
    B(){test();}
    virtual void func()
    {
      ++m_iVal;
      std::cout<<m_iVal<< ;
      }
};
int main(int argc ,char* argv[])
{
  A*p = new B;
  p->test();
  return 0;
}

解答:B 继承自 A, 先 A 构造函数,输出 0 ,然后 B 构造函数, B 的 test 继承自 A ,然后找 func 函数找到 B 自己的,所以输出 1 ,然后 p->test() 再执行一次,输出 2

Search

    Post Directory