Puis-je déclarer la variable membre comme const dans la classe de C++? Si oui, comment?Puis-je déclarer la variable membre comme const dans la classe de C++? Si oui, comment?
8
A
Répondre
18
Vous pouvez - vous mettez const devant le nom du type.
class C
{
const int x;
public:
C() : x (5) { }
};
3
Bien sûr, la façon la plus simple comme celui-ci si la valeur sera la même dans toutes les instances de votre classe:
class X
{
public:
static const int i = 1;
};
Ou si vous ne voulez pas statique:
class X
{
public:
const int i;
X(int the_i) : i(the_i)
{
}
};
8
Vous le déclarez comme si vous n'en étiez pas membre. Notez que déclarer une variable comme const aura des effets considérables sur la façon 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;
};
Ceci devrait vous donner une erreur différente, car vous avez déclaré i, sans le définir. Vous aurez besoin d'un "int X :: i;" quelque part. –
@James - ce n'est pas le cas, si le compilateur est suffisamment à jour pour prendre en charge les membres const static inline qui sont initialisés là où ils sont déclarés. –
@James: Je ne crois pas que cela soit vrai pour static int int - vous n'avez pas réellement besoin d'une définition distincte car le compilateur le traite comme une vraie constante. – RichieHindle