什么:是什么意思?

时间:2015-05-22 02:31:04

标签: c++ syntax

我有2个班级:

class base {
    virtual void foo() {};
};

class derived : public base {
    void foo() { base::foo(); }
};

我犯了一个错误并写了base:foo();而不是base::foo();。代码已编译并运行,但是已经过分段。

我不知道我怎么能谷歌它并且不知道它是什么,但我很感兴趣:这是什么意思?

base:foo();

如果重要:

class base : public QAbstractGraphicsShapeItem

1 个答案:

答案 0 :(得分:121)

void foo() { base:foo(); }

相当于:

void foo()
{
   base: // An unused label.
   foo(); // Calls the function again, resulting in infinite recursion.
}

由于无限递归,该函数导致堆栈溢出。