为什么类的静态成员对于所有对象都相同?

发布于 2024-10-15 08:28:21 字数 31 浏览 1 评论 0原文

为什么我们不为不同的对象拥有不同的静态变量副本?

Why don't we have different copies of static variables for the different objects?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

等风来 2024-10-22 08:28:21

因为那时他们将是实例成员

静态成员的主要特征是它们由类的所有实例共享。

Because they would be instance members then.

The primary characteristic of static members is that they're shared by all the instances of the class.

很酷不放纵 2024-10-22 08:28:21

因为 C++ 标准 (2003) 中的 $9.4.2/1 部分说,

静态数据成员不属于
类的子对象。有
静态数据成员只有一份副本
被所有对象共享
类。

由于标准本身决定了 C++ 是什么、不是什么,所以 C++ 就是这样设计的!

静态成员更像是全局对象。相同的副本属于所有对象!

有关详细答案,请参阅此帖子:如果没有创建类的对象,该类的静态成员会占用内存吗?

Because the section $9.4.2/1 from the C++ Standard (2003) says,

A static data member is not part of
the subobjects of a class. There is
only one copy of a static data member
shared by all the objects of the
class.

Since the Standard alone decides what C++ is, what not, so it's how C++ has been designed!

Static members are more like global objects. The same copy belong to all objects!

See this post for detail answer : Do static members of a class occupy memory if no object of that class is created?

只有一腔孤勇 2024-10-22 08:28:21

静态成员不与特定实例关联。

如果您希望每个实例的成员具有不同的值,则应使用instance 成员(删除 static 关键字)。

A static member is not associated with a specific instance.

If you want different values of the member for each instance you should use instance members (remove the static keyword).

凉月流沐 2024-10-22 08:28:21

根据定义,静态对象是由类的所有实例共享的对象。普通会员没有这个属性。

It's by definition- a static object is one that's shared by all instances of the class. Regular members don't have this property.

鲸落 2024-10-22 08:28:21

这就是静态的定义——存在一份数据副本。它是单独存储的,很可能与库或应用程序的所有其他静态数据一起存储。

That is the definition of static - one copy of the data exists. It is separately stored, most likely along with all the other static data of the library or application.

爱冒险 2024-10-22 08:28:21

因为这就是 static 在该上下文中的含义。

Because that's what static means in that context.

栀梦 2024-10-22 08:28:21

由于类静态成员单独存储在 BSS 部分,因此类的每个实例都具有相同的值。

Because class static members are stored separately in BSS section, so every instance of a class has the same value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文