Puis-je déclarer la variable membre en tant que const en classe de C ++? Si oui, comment? P>
3 Réponses :
Vous pouvez - vous mettez Const devant le nom de type.
class C { const int x; public: C() : x (5) { } };
Bien sûr, le moyen le plus simple est comme celui-ci si la valeur sera la même dans toutes les instances de votre classe: ou si vous ne le voulez pas statique: P>
Cela devrait vous donner une erreur différente, comme vous avez donné déclaré que je, sans le définir. Vous aurez besoin d'un "int x :: i;" quelque part.
@James - pas non plus, si le compilateur est à jour suffisamment pour prendre en charge les membres de la Const Statique en ligne qui sont initialisés où ils sont déclarés.
@James: Je ne crois pas que c'est vrai pour Static const int Int - vous n'avez pas besoin d'une définition distincte car le compilateur le traite comme une véritable constante.
Cela vous donnera une erreur si vous l'utilisez pour des choses simples, autres. Ce qui suit rend cela donne une erreur de liaison, très probablement: int const & i = x :: i; code> et
& x :: i code> de même. La transmettre à une fonction prise
int & code> fera le même mal. Strictement, même faire
si (x :: i == 1); code> nécessite une définition, car ici
x :: i code> apparaît si seulement les expressions constantes sont autorisées (c'est cependant Un défaut de la norme - corrigé déjà pour C ++ 1x!). Habituellement, il n'y aura aucune erreur si vous ne lisez immédiatement immédiatement sa valeur.
Vous le déclarez comme vous le feriez si ce n'était pas un membre. Notez que déclarer une variable en tant que const aura des effets considérables sur la manière dont la classe est utilisée. Vous aurez certainement besoin d'un constructeur pour l'initialiser:
class A { public: A( int x ) : cvar( x ) {} private: const int cvar; };