程序运行,但Eclipse调试器挂起

时间:2018-02-01 19:12:57

标签: c++ eclipse

该计划与此类似:

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)行中有什么危险吗?

1 个答案:

答案 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;
}

没有编译错误,它是逻辑错误

相关问题