0

如果我有这样的课程:

typedef union { __m128 quad; float numbers[4]; } Data

class foo
{
public:
    foo() : m_Data() {}

    Data m_Data;
};

和这样的课程:

class bar
{
public:

   bar() : m_Data() {}

   foo m_Data;
}

创建 bar 的实例时是否调用了 foo 的构造函数?

因为当我尝试使用bar' m_Datas quadin时,bar它似乎未初始化,即使它在numbers[4]. :\

具体来说,这会崩溃:

m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)

任何帮助,将不胜感激。:)

4

2 回答 2

2

您必须将构造函数声明为,否则如果您将其声明为成员public,则不允许任何人实例化您的类。private

于 2009-09-12T00:27:47.907 回答
1

对我来说看起来不错。foo 和 bar 是非 POD 类型,因为它们有一个构造函数,所以它们的成员保证在构造后被初始化。

也许数据稍后会通过内存泄漏被覆盖?

你如何创建 bar 的实例?

于 2009-09-12T00:34:42.510 回答