UUID& uuid_t数据类型在分配后会发生变化吗?

时间:2015-12-28 02:28:57

标签: c++ linux winapi

WinAPI UUID可以在分配后更改吗? Linux uuid_t可以在分配后更改吗?

例如(与UUID相关的示例,但uuid_t的问题相同):

class Component
{
public:
    UUID id; // considering whether to make this public or not

    Component()
    { 
        UuidCreate(&id);
    }
};

Component c;
UuidCreate(c.id); // can it be changed after already being assigned? Is it constant?

1 个答案:

答案 0 :(得分:3)

是的,UUIDuuid_t都只是包含一系列整数的结构。如果任何消费者可以获得非const的引用,则可以对其进行修改。

如果您不希望消费者更改UUID,最好的方法是使其成为private成员,并且只通过返回const引用的访问器将其公开给外部世界:

class Component
{
public:
    Component()
    { 
        UuidCreate(&id);
    }

    const UUID& GetId() const
    { 
        return id;
    }

private:
    UUID id;
};