如何在cpp类中使用静态常量?

时间:2012-03-29 22:55:04

标签: c++ class static

我从沉重的java背景进入c ++。

你如何拥有与班级相关的常数?   如果它是Java,那就像

public class Example{
    public static final int CONSTANT = 0;
}

public static void main (String[] args){
    System.out.println(Example.CONSTANT);
}

结果只是0。

在c ++中我到目前为止已经想到了:

class Example{
    const int LEVEL_INF;
}

这是正确的吗? 即使是通过ISO 98?

3 个答案:

答案 0 :(得分:3)

class Example{
    const int LEVEL_INF;
};

不是每个类,而是每个实例。你需要把它变成静态的:

class Example{
    static const int LEVEL_INF;
};

静态const积分类型的优点是你可以在类中初始化它们,不一定在外面:

class Example{
    static const int LEVEL_INF = 1337;
};

另外,如果您想要公开访问,请添加public

编辑:根据@ ildjarn的建议,在课外进行初始化:

//header.h
class Example{
    static const int LEVEL_INF;
};

//implementation.cpp

const int Example::LEVEL_INF = 1337;

答案 1 :(得分:2)

为了完整起见,除了static const之外,还有另一种方法:

class Example
{
    // Anonymous enum
    enum { LEVEL_INF = 0; };
};

答案 2 :(得分:1)

只要它是一个整数常量,就像int一样,你可以像在Java中那样做

class Example {
public:
    static const int LEVEL_INF = 0;
};