我想确保我正确理解这一点。我在这里问它,因为我没有明确说明它的资金。
例如,我有一个基本上是这样构建的三角形网格类:
class Mesh
{
public:
struct Face
{
unsigned int a;
unsigned int b;
unsigned int c;
};
//...
private:
std::string file;
std::vector<glm::vec3> vertices;
std::vector<glm::vec3> normals;
std::vector<glm::vec2> texcoord;
std::vector<Face> faces;
}
由于网格中的数据可能会变得非常大,我想实现正确的移动语义。对于指针类型,我完全理解这一点,但要触发右值构造函数,我需要使用移动,对吧?
例如,右值构造函数将是:
Mesh::Mesh(Mesh&& other)
: file(std::move(other.file)),
vertices(std::move(other.vertices)),
normals(std::move(other.normals)),
texcoord(std::move(other.texcoord)),
faces(std::move(other.faces) {}
注意:在有人指出明显之前,该应用程序在许多地方都使用了 share_ptr。但我不想人为地限制类的使用。