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?
答案 0 :(得分:3)
是的,UUID
和uuid_t
都只是包含一系列整数的结构。如果任何消费者可以获得非const
的引用,则可以对其进行修改。
如果您不希望消费者更改UUID
,最好的方法是使其成为private
成员,并且只通过返回const引用的访问器将其公开给外部世界:
class Component
{
public:
Component()
{
UuidCreate(&id);
}
const UUID& GetId() const
{
return id;
}
private:
UUID id;
};