2009-07-11 31 views

Respuesta

18

Usted puede - usted pone const delante del nombre del tipo.

class C 
{ 
    const int x; 

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

Sin duda, la forma más sencilla es así si el valor será el mismo en todas las instancias de la clase:

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

O si no desea que estática:

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

Eso debería darte un error diferente, como dijiste i, sin definirlo. Necesitará un "int X :: i;" algun lado. –

+2

@James: no es así, si el compilador está actualizado lo suficiente para admitir miembros de const estáticos en línea que se inicializan donde se declaran. –

+1

@James: No creo que eso sea cierto para static const int; en realidad, no necesita una definición separada porque el compilador la trata como una constante verdadera. – RichieHindle

8

Lo declara como si fuera un miembro. Tenga en cuenta que declarar una variable como const tendrá efectos considerables en la forma en que se usa la clase. Definitivamente necesitarás un constructor para inicializarlo:

class A { 
    public: 
     A(int x) : cvar(x) {} 
    private: 
     const int cvar; 
}; 
Cuestiones relacionadas