2009-07-11 5 views

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) 
    {  
    } 
}; 
+2

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. –

+2

@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. –

+1

@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

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; 
}; 
Questions connexes