2011-03-08 16 views
5

voy sobre algunas ++ material de C/CLI y me he encontrado con el concepto de un campo literal:campo literal frente a la variable constante en C++/CLI

literal int inchesPerFoot = 12; 

Es esto preferible a una constante porque una const cAMPO no puede existir debido a que un campo no puede inicializarse ... así:

class aClass 
{ 
    private: 
     const int aConstant = 1; // Syntax error. 
... 
}; 

Gracias,

de Scott

Respuesta

17

Un campo literal se usa para las constantes de tiempo de compilación. Está asociado con la clase (similar a un campo "const estático"). En su ejemplo, aConstant es un campo no estático const (basado en una instancia), por lo que no puede inicializarlo en el momento de la declaración (se inicializaría en la lista de inicialización del ctor).

La diferencia entre los campos de const literales y estáticos es que los ensamblados de referencia no pueden usar los campos de const estáticos como constantes de tiempo de compilación, mientras que los literales pueden. Sin embargo, dentro del mismo conjunto, const estático se puede utilizar como constantes de tiempo de compilación.

FYI, literal es equivalente a C# 'const. initonly es equivalente a C# 's de solo lectura.

+0

Gracias por su respuesta! Aprecié la mención de initonly también ... encontré eso poco después de publicar esto. –

Cuestiones relacionadas