我有2个班级:
class base {
virtual void foo() {};
};
class derived : public base {
void foo() { base::foo(); }
};
我犯了一个错误并写了base:foo();
而不是base::foo();
。代码已编译并运行,但是已经过分段。
我不知道我怎么能谷歌它并且不知道它是什么,但我很感兴趣:这是什么意思?
base:foo();
如果重要:
class base : public QAbstractGraphicsShapeItem
答案 0 :(得分:121)
void foo() { base:foo(); }
相当于:
void foo()
{
base: // An unused label.
foo(); // Calls the function again, resulting in infinite recursion.
}
由于无限递归,该函数导致堆栈溢出。