我正在浏览一些C ++ / CLI资料,我遇到了字面字段的概念:
literal int inchesPerFoot = 12;
这是否优于const,因为const FIELD 不能存在,因为字段无法初始化...所以:
class aClass
{
private:
const int aConstant = 1; // Syntax error.
...
};
谢谢,
斯科特
答案 0 :(得分:17)
文字字段用于编译时常量。它与类相关联(类似于“静态const”字段)。在您的示例中,aConstant
是一个非静态const(基于实例)字段 - 这就是您在声明时无法初始化它的原因(它将在ctor的初始化列表中初始化)。
文字和静态const字段之间的区别在于引用程序集不能使用静态const字段作为编译时常量,而文字可以。但是,在同一个程序集中,static const可以用作编译时常量。
FYI, literal等同于C#的const。 initonly等同于C#的readonly。