程序是这样的:
class A {
const A& a;
public:
A(const A& a) : a(a) {}
};
int main(int argc, char** argv) {
A a(a);
}
程序编译运行。但是,有时 Eclipse 调试器会卡住。注释掉 A a(a) 行可以解决问题。
A a(a) 行中是否存在危险?
最佳答案
这是无限递归,显然A类的构造函数在一次又一次地调用自己。 如果你使用 gcc,你会看到这样的警告:
warning: variable 'a' is uninitialized when used within its own
initialization [-Wuninitialized]
A a(a);
就像你在调用这个函数:
void assign(int& a){
assign(a);
}
int main(){
int a;
assign(a);
return 0;
}
没有编译错误,是逻辑错误
关于c++ - 程序运行,但 Eclipse 调试器挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570127/