Für eine eindeutige ID für ein Objekt kann ich einen Zähler auf zwei Arten erstellen, aber ich weiß nicht welche besser ist, während sie im Code ganz anders sind (obwohl vielleicht nicht im Byte-Code, ich habe keine Ahnung).statische Variable innerhalb der Funktion vs statische Klasse Variable in C++
Die erste Möglichkeit wäre, eine Funktion zu haben, die eine statische Variable verwendet:
Rubrik:
unsigned int GetNextID();
cav:
unsigned int GetNextID()
{
static unsigned id{0};
return id++;
}
Die andere Option:
Kopf :
class UniqueIdGenerator
{
public:
static unsigned int GetNextID();
private:
static unsigned int mID;
}
cav:
unsigned int UniqueIdGenerator::mID = 1;
unsigned int UniqueIdGenerator::GetNextID()
{
return ++mID;
}
FYI, ich habe read, dass der ehemalige nicht sicher ist, fädeln, aber ich sehe nicht, warum diese beiden wäre. Wenn überhaupt, mag ich die einfache Funktion mehr wie es einfacher ist & kürzer.
FWIW, du hast Recht. Keine der beiden Implementierungen ist Thread-sicher. –
Nur um es klarer zu machen, weil sich die Leute aus irgendeinem Grund auf Thread-Sicherheit konzentrieren (es tut mir leid, wenn meine Frage vage ist): Ich frage, warum eine der beiden Methoden besser wäre. Wenn sie genauso Thread-unsicher sind, sollte Thread-Sicherheit nicht in die Diskussion eingehen. – ikku100