c ++类中的ID数据成员

Nor*_*wan 4 c++ types datamember data-structures

我的老师要求我们创建自动生成的ID数据成员,一旦建立就无法修改.什么是最合适的类型?如果答案是 静态的const int ID;

如何在const时自动生成它?

Spo*_*ook 8

由于ID必须是唯一的,因此必须确保两个实例永远不会获得相同的ID.此外,课外的任何人都不应干涉生成UID.

首先,在类中定义静态字段:

class Data
{
private:
    static int newUID;

(...)
};

// The following shall be put in a .cpp file
int Data::newUID = 0;
Run Code Online (Sandbox Code Playgroud)

然后,在创建每个实例之后,它应该采用新的ID值并增加newUID计数器:

class Data
{
(...)
    const int uid;  

public:
    Data()
        : uid(newUID++)
    {
    }

    int GetUid()
    {
        return uid;
    }
};
Run Code Online (Sandbox Code Playgroud)

除了类之外,没有人可以访问内部newUID,为每个实例自动生成ID,并且您(几乎1)确定没有两个实例具有相同的ID号.


1除非您生成超过40亿个实例