C++强制程序员在类外定义非常量静态成员,我一直看到的原因是如果静态成员在类内定义,这将导致静态成员有多个定义。我理解同一个静态成员有多个定义是不好的,但是我不明白这些多余的定义甚至会发生在哪里。难道一个已初始化的非常量静态成员不仅仅只是进入数据段吗,这就是唯一的定义吗?
struct Student {
static int x = 4; // Why would this result in multiple definitions?
};
此外,我在另一篇stackoverflow文章中看到,const static成员只是简单地内联到代码中,无论它被放置在哪里: 为什么我不能在类中有一个非整数静态const成员? 这是否由预处理器与所有其他指示一起处理?(如果需要,我将在另一篇文章中提出此问题,但我不确定它是否值得另开一篇文章。)