首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在构造函数中正确初始化XMVECTOR?

如何在构造函数中正确初始化XMVECTOR?
EN

Stack Overflow用户
提问于 2013-06-29 05:16:33
回答 1查看 2.2K关注 0票数 0

我很难找到可靠的文档,说明在XMVECTOR上调用默认构造函数时会发生什么。

MSDN表示XMMATRIX默认构造函数不会将变量初始化为0 (http://msdn.microsoft.com/en-us/library/windows/desktop/ee420023(v=vs.85).aspx。因此,我的直觉是XMVECTOR也是如此,但不幸的是,我在MSDN站点上找不到这种确认。

回到原来的问题:

代码语言:javascript
复制
// Trackball.h
class Trackball
{
    ...
    XMVECTOR m_eye;
    XMVECTOR m_position;
    XMVECTOR m_up;
    XMVECTOR m_rotateStart;
    XMVECTOR m_rotateEnd;
    ...
}

// Trackball.cpp
Trackball::Trackball(void) :
    ...
    m_eye(),
    m_rotateStart(),
    m_rotateEnd(),
    m_zoomStart(),
    m_zoomEnd(),
    m_panStart(),
    m_panEnd(),
    ...
{
}

但是这仅仅使用了默认的构造函数来初始化变量,对吗?因此,如果上面的假设成立,即默认构造函数不初始化XMVECTOR的成员,那么我是否应该这样做呢?

代码语言:javascript
复制
// Trackball.cpp
Trackball::Trackball(void) :
    ...
    m_eye(XMVectorZero()),
    m_rotateStart(XMVectorZero()),
    m_rotateEnd(XMVectorZero()),
    m_zoomStart(XMVectorZero()),
    m_zoomEnd(XMVectorZero()),
    m_panStart(XMVectorZero()),
    m_panEnd(XMVectorZero()),
    ...
{
}

这看起来很丑陋,但可能是对的。

感谢您的阅读,并感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-29 09:40:31

我认为你的方法是正确的,如果你觉得它很难看,你可以把它放在构造函数体中,尽管它会损失一些性能,因为初始化列表只调用复制构造函数。如果想看看XMVECTOR的默认构造函数做了什么,可以在调试模式下运行程序,并在监视窗口中查看。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17373812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档