When a class inherits another publicly, then shouldn't all virtual functions get rewritten? Consider the code --
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();
  }
}
Now, when I call the function something() on an object b of class B by executing the statement b.something(), I get the output A. Why is this?
 
    