Литеральное поле и константная переменная в C++/CLI

Я просматриваю некоторые материалы C++/CLI и наткнулся на концепцию буквального поля:

literal int inchesPerFoot = 12;

Является ли это предпочтительным для константы, потому что константа FIELD не может существовать, потому что поле не может инициализировать себя... поэтому:

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

Спасибо,

Скотт


person Scott Davies    schedule 08.03.2011    source источник


Ответы (1)


Литеральное поле используется для констант времени компиляции. Он связан с классом (аналогично полю "static const"). В вашем примере aConstant является нестатическим полем const (на основе экземпляра), поэтому вы не можете инициализировать его во время объявления (оно будет инициализировано в списке инициализации ctor).

Разница между литеральными и статическими константными полями заключается в том, что ссылающиеся сборки не могут использовать статические константные поля в качестве констант времени компиляции, в то время как литералы могут. Однако внутри одной сборки static const можно использовать в качестве констант времени компиляции.

К вашему сведению, литерал эквивалентен константе С#. initonly эквивалентен C# readonly.

person Matt Smith    schedule 08.03.2011
comment
Спасибо за Ваш ответ! Я также оценил упоминание об initonly ... наткнулся на это вскоре после публикации этого. - person Scott Davies; 11.03.2011