问一个类中static变量的有关问题
问一个类中static变量的问题类的定义是这样的:头文件:class A{public:static const int astatic const in
问一个类中static变量的问题
类的定义是这样的:
头文件:
class A
{
public:
static const int a;
static const int b;
static int c;
A();
~A();
};
CPP文件:
int A::a=10;
const int A::b= 6;
A::A()
{
c = a+b;
}
main函数这样调用:
main()
{
while(1)
{
testfun();
}
}
void testfun()
{
for(int i=0; i<10; i++)
{
A myClass;
}
}
请问这段代码会不会不断地给static变量重复开辟内存而不回收? 也就是说运行期间,内存会不会不停的增加?
[解决办法]不会的。
[解决办法]不会,并且A::a是所有的A类对象公用
[解决办法]你的变量:static int c; 它是一个类中的静态变量,对他进行初始化应该是在类的外部。
你的那个调用:c = a + b; 并不会对c 进行内存空间的申请。它只是每次对c 进行的一个重新赋值操作。
如果有如下操作:
A::a = 0;
A::b = 0;
A objectA_01;
A::a = 2;
A::b = 2;
A objectA_02;
这种情况下不管是对象objectA_01 还是objectA_02 中的静态变量都是4. 因为它都是在同一片内存中。
[解决办法]不会,静态成员是和对象独立的,也就是新创建一个类对象时,不会创建该对象的静态成员,而你的类只有静态成员,所以不会无休止的分配内存
[解决办法]楼主多虑了!不会的吧!放心使用!