class A {
private:
A* a = new A();
public:
A() {}
~A() {}
};
class A {
private:
A* a;
public:
A() { a = new A(); }
~A() {}
};
class A {
private:
A* a;
public:
A() : a(new A()) {}
~A() {}
};
int main() {
A* a = new A();
return 0;
}
这里编译没问题可以通过
但是运行失败
这里的问题是因为在构造A的时候
对a进行赋值或者初始化的时候 需要继续构造一个A
然后一直递归调用 然后就完蛋了
当然如果是调用其他的构造函数是可以的 上述是因为递归调用了同一个构造函数导致