c++ - 类中的静态成员是如何分配的?

标签 c++ variables static

如果我有一个类似的类

class MyClass {
   public:
      int myMember1;
      int myMember2;
      int myMember3;
};

每次我实例化一个MyClass的对象时,分配三个连续的int空间,当我有类似的东西时怎么办

class MyClass {
   public:
      static int myMember1;
      int myMember2;
      int myMember3;
};

这次内存是怎么分配的?

我问是因为我不完全确定当我声明同一个类的多个实例时内存将如何分配,是否有指向静态成员的指针?

最佳答案

正如其他人已经指出的,您必须在类定义之外显式地为静态成员变量分配空间。

在回答您的其他问题时,静态成员变量与类对象没有关联。也就是说,即使您的 MyClass 对象不复存在(直到您的程序终止),它们仍将继续存在,并在您的类的所有实例之间共享。

假设您像这样创建了 MyClass 类的多个实例:

class MyClass {
public:
  static int myMember1;
  int myMember2;
  int myMember3;
};

int MyClass::myMember1 = 1;

int main()
{
   MyClass mc1;
   MyClass mc2;

   mc2.myMember1 = 2;

   std::cout << mc1.myMember1 << '\n';
   std::cout << mc2.myMember1 << '\n';
   return 0;
 }

输出将是:

2
2

关于c++ - 类中的静态成员是如何分配的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521566/

相关文章:

java - 导入包并使用实例变量

c++使用CLI数组初始化值static int

c++ - 如何在 Windows 中获取屏幕比例?

c++ - GCC - 结构内未使用的变量警告

c# - 哪一个更好? "var"还是 "DataType"?

Python递归函数问题

asp.net - 在 ASP.NET 应用程序中存储单例实例的最佳实践

c++ - header 中的 private static const 成员变量与 cpp 中的 const 变量

c++ - Halide 如何自动调整时间表

c++ - (不是)指针调整破坏了我的一天和堆? (C++)