我有一个这样的类结构:
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/