C++/CLI中的字面字段与常量变量

Sco*_*ies 5 c++-cli

我正在讨论一些C++/CLI材料,我遇到了一个文字字段的概念:

literal int inchesPerFoot = 12;
Run Code Online (Sandbox Code Playgroud)

这比const更可取,因为const FIELD不能存在,因为字段不能自己初始化...所以:

class aClass
{
    private:
        const int aConstant = 1;    // Syntax error.
...
};
Run Code Online (Sandbox Code Playgroud)

谢谢,

斯科特

Mat*_*ith 17

文字字段用于编译时常量.它与类相关联(类似于"静态const"字段).在您的示例中aConstant是一个非静态const(基于实例)字段 - 这就是您在声明时无法初始化它的原因(它将在ctor的初始化列表中初始化).

文字和静态const字段之间的区别在于引用程序集不能使用静态const字段作为编译时常量,而文字可以.但是,在同一个程序集中,static const可以用作编译时常量.

仅供参考,文字等同于C#的常量.initonly相当于C#的readonly.