首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个类中static变量的有关问题

2013-12-19 
问一个类中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变量重复开辟内存而不回收?  也就是说运行期间,内存会不会不停的增加?
[解决办法]
不会的。

引用:
类的定义是这样的:
头文件:

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. 因为它都是在同一片内存中。
[解决办法]
不会,静态成员是和对象独立的,也就是新创建一个类对象时,不会创建该对象的静态成员,而你的类只有静态成员,所以不会无休止的分配内存
[解决办法]
楼主多虑了!不会的吧!放心使用!

热点排行