我有一个这样的类结构:

class A{

    public:
    void foo();

};

class B: public A{

    public:
    void foo();

};

B::foo()的实现类似于:
void B::foo(){

   A:foo();

}

显然,我在键入'::'时犯了一个错误,但是编译器没有抱怨。当我运行程序时,它的运行就像我键入了一样:
void B::foo(){

   foo();

}

有人可以在C++标准中解释吗?它是真正有效的代码,还是编译器中可能的错误(MS Visual Studio 2012)?

最佳答案

A:一个标签,用于goto语句。

void B::foo(){
   goto A;
   std::cout << "this will be skipped";
   A:foo();
}

关于c++ - 作用域运算符中的错字导致Visual Studio 2012中意外的编译和递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31818036/

10-11 22:45
查看更多