Maison >développement back-end >C++ >Comment initialiser correctement les variables de chaîne statiques dans les classes C ?

Comment initialiser correctement les variables de chaîne statiques dans les classes C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 17:45:12559parcourir

How to Properly Initialize Static String Variables in C   Classes?

Initialisation de chaînes statiques dans les classes C

Lors de la déclaration de fonctions membres et de variables au sein d'une classe, la portée et l'accessibilité deviennent des considérations importantes. Si vous rencontrez une situation où certaines fonctions membres n'accèdent pas directement aux objets de classe et que vous décidez de les rendre statiques, vous devrez peut-être également modifier les déclarations des variables auxquelles elles accèdent.

Problème : Initialisation Variables de chaîne statiques

Si vous avez des variables de chaîne comme celles ci-dessous dans une classe :

string RE_ANY = "([^\n]*)";
string RE_ANY_RELUCTANT = "([^\n]*?)";

Les créer Les variables const statiques garantissent qu'elles restent inchangées, mais peuvent entraîner des problèmes d'initialisation. Le compilateur peut se plaindre du fait que les variables intégrales constantes statiques ne peuvent être initialisées qu'au sein d'une classe.

Solution : initialisation externe

En guise de solution de contournement, vous pouvez initialiser ces variables de chaîne statiques en dehors de la classe dans un fichier source. Par exemple :

// 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]*?)";

Attention : Distinguer les fonctions statiques et const

Il est crucial de noter que vous ne devez pas rendre statiques les fonctions membres accédant à ces chaînes, car elles vous devez toujours accéder aux membres de la classe. Pensez plutôt à en faire des fonctions const, ce qui les empêche de modifier les membres de la classe. Cela maintient l'association requise entre les fonctions et les objets de classe tout en garantissant l'immuabilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn