如果我有一个类似的类
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/