#include <iostream>
struct D{};
struct B{};
struct C
{
C();
};
struct A
{
A();
B * b;
C * c;
D * d;
static A& pInstance()
{
static A a;
return a;
}
};
A::A()
{
b = new B;
c = new C;
d = new D;
}
C::C()
{
A::pInstance().b;
}
int main()
{
A::pInstance();
std::cin.ignore();
}
上述情况是否存在任何潜在问题,因为 C 构造函数调用 A 字段,而 A 类尚未完全构造。
我在生产中有这段代码。该应用程序似乎在启动时随机崩溃,我想知道这是否是由于这种“糟糕”的设计造成的。
最佳答案
它被明确声明为未定义的行为:(§ 6.7/4)“如果控件在初始化变量时递归地重新进入声明,则行为是未定义的。”
关于c++ - 在另一个构造函数中实例化的对象的构造函数中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939139/