c++ - 在另一个构造函数中实例化的对象的构造函数中调用函数

标签 c++

#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/

相关文章:

c++ - std::set 删除复杂性异常?

c++ - 将 short*/double* 转换为 int* 并返回并取消引用

c++ - 指针类型是在声明中调用 "prevent"构造函数的唯一方法吗?

c++ - 获取主要可执行文件的 ELF header

c++ - 将 .getline 与字符串而不是字符一起使用

c++ - 修复基于模块的库中的自阻塞包含

c++ - 改变片段的颜色

c++ - 无法识别 Qt4 现有插槽

c++ - 与数学库 sin 相比,sin 函数不准确

c++ - 泛化 bool 函数以获得更优雅的代码