Warum sollte constexpr statisch sein?
Nachdem ich dies und das gelesen habe, bin ich immer noch verwirrt über diese Art von Ausdrücken:
static constexpr int = 0;
AFAIK in C ++:
staticGewährleistet eine lebenslange Speicheradresse während der gesamten Ausführung und eine sichere Initialisierung mit gleichzeitigen ThreadsconstexprGewährleistet die Auswertung der Zeitkompilierung als rWert, dh es darf keine Speicheradresse haben
Sie sehen für mich widersprüchlich aus. staticstellt sicher, dass die Variable eine Langzeitspeicheradresse hat, während constexprdie entgegengesetzte Annahme sichergestellt wird. Überraschenderweise erwähnt die Diskussion im ersten Link Folgendes:
constexpr int x = 3;
const int* p = &x;
Wie können wir überhaupt die Speicheradresse erhalten, xwenn es sich um einen Wert handelt?
Könnte es jemand erklären? Danke im Voraus
Antworten
statichat eine Reihe von Bedeutungen. In Klassen (gemäß Ihrem Kommentar) bedeutet dies, dass das Mitglied der Klasse zugeordnet ist und nicht einer bestimmten Instanz (Objekt) dieser Klasse.
Für a constexprmacht das sehr viel Sinn. Dies wird normalerweise durch einen dem Compiler bekannten Wert und nicht durch ctor-Argumente initialisiert.