const和static const有什么区别?

时间:2014-07-03 03:01:04

标签: c++

以下陈述均有效:

static const A = 2;
const B = 3;

声明第一个或第二个有什么不同?

2 个答案:

答案 0 :(得分:1)

如果要在类中声明static const,它可以从类和该类的任何实例访问,因此所有的共享相同的值;并且const本身对于每个类的实例都是独占的。

鉴于课程:

class MyClass {
    public:
        static const int A = 2;
        const int B = 4;
};

你可以这样做:

int main() {
    printf("%d", MyClass::A);

    /* Would be the same as */

    MyClass obj;
    printf("%d", obj.A);

    /* And this would be illegal */
    printf("%d", MyClass::B);
}

查看here on Ideone

答案 1 :(得分:0)

静态意味着整个类只共享1个const,其中非静态意味着该类的每个实例都单独包含该const。

示例:

class A{

static const a;
const b; 
}

//Some other place:

A m;
A n;

对象m和n具有相同的a,但不同的b。