以下陈述均有效:
static const A = 2;
const B = 3;
声明第一个或第二个有什么不同?
答案 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);
}
答案 1 :(得分:0)
静态意味着整个类只共享1个const,其中非静态意味着该类的每个实例都单独包含该const。
示例:
class A{
static const a;
const b;
}
//Some other place:
A m;
A n;
对象m和n具有相同的a,但不同的b。