(整理)
当你实现派生类虚函数时,如果函数体内需要调用基类的虚函数版本时,需要显式使用基类的作用域操作符,否则就会在派生类作用域内调用派生类版本的虚函数,这样会导致无穷递归。
就是自己在调用自己呀,没有指明调用的是基类的虚函数,自动认为是调用派生类的虚函数,然后就再次调用了,一直进行下去了
struct A
{
virtual void foo(void) { }
}
struct B: public A
{
void foo(void)
{
foo(); // 递归调用自己,即 B::foo()
A::foo(); // 明确告诉编译器,调用的是 A::foo(), 而不是自己
}
}