该计划与此类似:
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)行中有什么危险吗?
答案 0 :(得分:0)
它的无限递归,显然一个类构造函数一次又一次地调用自己。 如果你使用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;
}
没有编译错误,它是逻辑错误