我有一个基类,我将调用Base
和派生类Derived
。 Base
类有一个名为readInData(istream)
的方法,它从定义的operator>>
函数内部调用。 Derived
有自己对readInData(istream)
的定义,但还没有自己的运算符定义(从Base
继承定义。
我的问题是,如果Derived
使用base中定义的运算符,该运算符调用两个类中定义的方法,那么调用它是Base::readInData(istream)
还是Derived::readInData(istream)
?
我希望Derived::readInData(istream)
被调用,所以我还需要重新定义运算符来执行此操作吗?
谢谢, 标记
答案 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!