为什么我们不为不同的对象提供不同的静态变量副本?
答案 0 :(得分:5)
因为它们会instance members。
static members的主要特征是它们被所有类的实例共享。
答案 1 :(得分:5)
因为C ++ Standard(2003)的$ 9.4.2 / 1部分说明了,
静态数据成员不属于 一个类的子对象。有 只有静态数据成员的一个副本 由所有对象共享 类。强>
由于标准单独决定C ++是什么,不是什么,所以它就是C ++的设计方式!
静态成员更像是全局对象。同一副本属于所有对象!
有关详细解答,请参阅此帖子:Do static members of a class occupy memory if no object of that class is created?
答案 2 :(得分:4)
静态成员与特定实例无关。
如果您希望每个实例的成员值不同,则应使用 instance 成员(删除static关键字)。
答案 3 :(得分:3)
根据定义,静态对象是由类的所有实例共享的对象。普通会员没有这个属性。
答案 4 :(得分:3)
这是static
的定义 - 存在一个数据副本。它是单独存储的,很可能与库或应用程序的所有其他静态数据一起存储。
答案 5 :(得分:1)
因为那是static
在这种情况下的含义。
答案 6 :(得分:-1)
因为类静态成员分别存储在BSS部分中,所以类的每个实例都具有相同的值。