C++ 继承类调用父类的函数

代码如下所示:

#include <iostream>

class A
{
protected:
    int m;

public:
   A(){ m = 0; }
   void put()
   {
       add();
       std::cout<<m<<std::endl;
   }

   void add()
   {
        m += 1;
   }
};

class B:public A
{
public:
    void add()
    {
         m += 2;
    }
};

int main()
{
    A a ;
    B b ;
    a.put();
    b.put();
}

编译后运行结果是什么呢, 1 1 还是1 2呢?

正确答案是1 1,类B继承自A,执行 b.put() 时实际上是运行了A::put(),所以会调用 A::add() 而不是 B::add();

THE END