当一个类公开继承另一个类时,那么不应该重写所有虚函数吗? 考虑代码 -
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()
。这是为什么?
答案 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 - 按预期