C ++中具有公共继承的虚函数和私有成员

时间:2013-12-19 21:44:30

标签: c++ inheritance virtual-functions

当一个类公开继承另一个类时,那么不应该重写所有虚函数吗? 考虑代码 -

class A {
private:
  vector<int> v;
public
  virtual int something() {
    cout << "A" << endl;
    return v.size();
  }
}

class B : public A {
private:
  priority_queue<int> v;
public
  int something() {
    cout << "B" << endl;
    return v.size();
  }
}

现在,当我通过执行语句something()b的{​​{1}}对象上调用函数class B时,我得到输出b.something()。这是为什么?

1 个答案:

答案 0 :(得分:0)

更正了错误(请参阅http://codepad.org/ssivYhWb

即。

#include <iostream.h>

class A {
private:
  vector<int> v;
public:
  virtual int something() {
    cout << "A" << endl;
    return v.size();
  }
};

class B : public A {
private:
  priority_queue<int> v;
public:
  int something() {
    cout << "B" << endl;
    return v.size();
  }
};

int main() {
  B b;
  b.something();
   return 0;
}

它返回B - 按预期