我是在传递结构的日子里长大的,因为它们通常很大,所以指针总是要走的路。现在 C++11 有相当好的 RVO(正确的值优化),我想知道像下面这样的代码是否有效。
如您所见,我的类有一堆向量结构(不是指向它们的指针)。构造函数接受值结构并将它们存储起来。
我的-希望-是编译器将使用移动语义,这样就不会复制数据了;构造函数将(如果可能)只假设传入的值的所有权。
有谁知道这是否是真的,并且是自动发生的,还是我需要一个带有 && 语法的移动构造函数等等?
// ParticleVertex
//
// Class that represents the particle vertices
class ParticleVertex : public Vertex
{
public:
D3DXVECTOR4 _vertexPosition;
D3DXVECTOR2 _vertexTextureCoordinate;
D3DXVECTOR3 _vertexDirection;
D3DXVECTOR3 _vertexColorMultipler;
ParticleVertex(D3DXVECTOR4 vertexPosition,
D3DXVECTOR2 vertexTextureCoordinate,
D3DXVECTOR3 vertexDirection,
D3DXVECTOR3 vertexColorMultipler)
{
_vertexPosition = vertexPosition;
_vertexTextureCoordinate = vertexTextureCoordinate;
_vertexDirection = vertexDirection;
_vertexColorMultipler = vertexColorMultipler;
}
virtual const D3DVERTEXELEMENT9 * GetVertexDeclaration() const
{
return particleVertexDeclarations;
}
};