C ++ - 从基类内部运算符调用基类'重写的虚方法

时间:2016-04-12 12:49:30

标签: c++ inheritance polymorphism

我有一个基类,我将调用Base和派生类DerivedBase类有一个名为readInData(istream)的方法,它从定义的operator>>函数内部调用。 Derived有自己对readInData(istream)的定义,但还没有自己的运算符定义(从Base继承定义。

我的问题是,如果Derived使用base中定义的运算符,该运算符调用两个类中定义的方法,那么调用它是Base::readInData(istream)还是Derived::readInData(istream)

我希望Derived::readInData(istream)被调用,所以我还需要重新定义运算符来执行此操作吗?

谢谢, 标记

2 个答案:

答案 0 :(得分:2)

由于您的问题表明该函数是虚函数,因此它将被调用Derived :: readInData(istream)。

答案 1 :(得分:1)

class A
{
public:
  void print()
  {
    std::cout << saySomething() << std::endl;
  }
  virtual std::string saySomething()
  {
    return "hey!";
  }
};

class B : public A
{
public:
  virtual std::string saySomething()
  {
    return "I am B!";
  }
};


int _tmain(int argc, _TCHAR* argv[])
{
  system("pause");

  B b;
  b.print();

  system("pause");
}

输出:我是B!