2009-07-11 14 views

risposta

18

Puoi - puoi mettere const davanti al nome del tipo.

class C 
{ 
    const int x; 

public: 
     C() : x (5) { } 
}; 
3

Certo, il modo più semplice è come questo se il valore sarà lo stesso in tutte le istanze della classe:

class X 
{ 
public: 
    static const int i = 1; 
}; 

Oppure, se non si vuole che statica:

class X 
{ 
public: 
    const int i; 
    X(int the_i) : i(the_i) 
    {  
    } 
}; 
+2

Questo dovrebbe darti un errore diverso, come hai dichiarato io, senza definirlo. Avrai bisogno di un "int X :: i;" da qualche parte. –

+2

@James - non è così, se il compilatore è aggiornato abbastanza da supportare i membri const statici integrati che sono inizializzati dove sono dichiarati. –

+1

@James: Non credo che sia vero per stat const const - non hai realmente bisogno di una definizione separata perché il compilatore la considera una vera costante. – RichieHindle

8

Si dichiara come si farebbe se non fosse un membro. Nota che dichiarare una variabile come const avrà effetti considerevoli sul modo in cui la classe viene usata. Avrai sicuramente bisogno di un costruttore per inizializzarlo:

class A { 
    public: 
     A(int x) : cvar(x) {} 
    private: 
     const int cvar; 
}; 
Problemi correlati