Heim >Backend-Entwicklung >C++ >Wie initialisiert man statische String-Variablen in C-Klassen richtig?
Statische Zeichenfolgen in C-Klassen initialisieren
Bei der Deklaration von Mitgliedsfunktionen und Variablen innerhalb einer Klasse sind Umfang und Zugänglichkeit wichtige Aspekte. Falls Sie auf eine Situation stoßen, in der einige Mitgliedsfunktionen nicht direkt auf Klassenobjekte zugreifen und Sie beschließen, sie statisch zu machen, müssen Sie möglicherweise auch die Deklarationen der Variablen ändern, auf die sie zugreifen.
Problem: Initialisierung Statische String-Variablen
Wenn Sie String-Variablen wie die folgenden in einer Klasse haben:
string RE_ANY = "([^\n]*)"; string RE_ANY_RELUCTANT = "([^\n]*?)";
Erstellen Sie sie Statische Konstantvariablen stellen sicher, dass sie unverändert bleiben, können jedoch zu Problemen bei der Initialisierung führen. Der Compiler beschwert sich möglicherweise darüber, dass statische konstante Integralvariablen nur innerhalb einer Klasse initialisiert werden können.
Lösung: Externe Initialisierung
Um dieses Problem zu umgehen, können Sie diese statischen Zeichenfolgenvariablen initialisieren außerhalb der Klasse in einer Quelldatei. Zum Beispiel:
// Within the class class Thing { static string RE_ANY; static string RE_ANY_RELUCTANT; }; // In a source file string Thing::RE_ANY = "([^\n]*)"; string Thing::RE_ANY_RELUCTANT = "([^\n]*?)";
Achtung: Unterscheidung zwischen statischen und konstanten Funktionen
Es ist wichtig zu beachten, dass Sie die Mitgliedsfunktionen, die auf diese Zeichenfolgen zugreifen, nicht statisch machen sollten, da sie Sie müssen weiterhin auf Klassenmitglieder zugreifen. Erwägen Sie stattdessen, sie zu konstanten Funktionen zu machen, was verhindert, dass sie Klassenmitglieder ändern. Dadurch wird die erforderliche Verbindung zwischen Funktionen und Klassenobjekten aufrechterhalten und gleichzeitig die Unveränderlichkeit gewährleistet.
Das obige ist der detaillierte Inhalt vonWie initialisiert man statische String-Variablen in C-Klassen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!