首页 > 试题广场 >

c++的一个类中声明一个static成员变量,下面描述正确的

[不定项选择题]
c++的一个类中声明一个static成员变量,下面描述正确的是()
  • static是加了访问控制的全局变量,不被继承
  • 类和子类对象,static变量占有一份内存
  • 子类继承父类static变量
  • static 变量在创建对象时分配内存空间

C++中的static成员变量主要用来为多个对象共享数据

1) 一个类中可以有一个或多个静态成员变量,所有的对象都共享这些静态成员变量,都可以引用它。
2) static 成员变量和普通 static 变量一样,都在内存分区中的全局数据区分配内存,到程序结束时才释放。这就意味着,static 成员变量不随对象的创建而分配内存,也不随对象的销毁而释放内存。而普通成员变量在对象创建时分配内存,在对象销毁时释放内存。
3) 静态成员变量必须初始化,而且只能在类体外进行。例如:int Student::m_total = 10;
初始化时可以赋初值,也可以不赋值。如果不赋值,那么会被默认初始化为 0。全局数据区的变量都有默认的初始值 0,而动态数据区(堆区、栈区)变量的默认值是不确定的,一般认为是垃圾值。
4) 静态成员变量既可以通过对象名访问,也可以通过类名访问,但要遵循 private、protected 和 public 关键字的访问权限限制。当通过对象名访问时,对于不同的对象,访问的是同一份内存。
5)父类的static变量和函数在派生类中依然可用,但是受访问性控制(比如,父类的private域中的就不可访问),而且对static变量来说,派生类和父类中的static变量是共用空间的,这点在利用static变量进行引用计数的时候要特别注意。   

发表于 2019-10-16 09:39:06 回复(0)
BD
发表于 2019-04-16 16:42:48 回复(0)
类和子类对象,static变量占有一份内存
有何错误?

发表于 2019-03-05 15:57:20 回复(1)