C++中 类的静态成员变量怎么时候被创建起来(即什么时候分配的内存空间)?生命周期为?

在一个进程中用这个类实例化的对象都共用这一个静态成员变量吗?

静态成员变量在程序启动时被分配,在程序结束时被释放,其生命周期为程序的生命周期。基于这个类的所有对象只有一个静态成员变量的拷贝。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-15

相当于全局变量,在声明类对象之前创建。是的,所有的此类对象共用此一个静态成员变量。

并且在类的外面进行定义。

#include<iostream>
using namespace std;
class m_clock
{
public:
static int s;
private:
    int h,m;
};
 int m_clock::s=9;

   
int main()
{
  cout<< m_clock::s<<endl;
    return 0;
}

本回答被网友采纳
第2个回答  2013-09-29
类的实例化对象是共用这个类的静态成员变量的
第3个回答  2018-06-19
除了整型可以在类内初始化,其他的必须在类外。

C++全局变量初始化
C++标准规定,全局或静态对象仅在首次使用时进行构造,并通过atexit()管理对象的生命期,在程序结束时按FILO顺序调用相应的析构操作。全局变量、文件域的静态变量和类的静态成员变量在main执行前进行静态初始化,分配内存并初始化。局部静态变量在第一次使用时分配内存并初始化。这里的变量涵盖了内置数据类型...

静态成员变量定义
在面向对象的编程语言如C++和C#中,类的成员变量可以通过使用关键字'static'(称为静态成员变量)进行定义。这种变量的特性在于,它并非与类的每个实例独立存在,而是被所有实例共享。例如,在类A中定义一个static整型变量number,初始值设为0。这样,无论创建多少个A的实例,它们都能共享同一个number变量。

CS知识整理丨程序设计语言丨C++(一)
使用`static`关键字在C++中可以实现多种功能,包括创建静态变量、声明静态函数、定义静态数据成员和模拟静态类。这些功能的使用取决于特定需求和上下文。例如:控制变量的生命周期:静态变量在函数内部声明时,其生命周期与程序的整个运行周期相同,不会因函数执行结束而销毁。避免重复初始化:静态变量只初始化...

静态变量和动态变量,成员变量
静态变量,即被 static 修饰的变量(如 static int a),属于类变量,可通过类或对象名调用。静态变量属于静态存储方式,在内存的静态数据区分配存储单元,生命周期与程序运行时间一致。静态变量被所有对象共享,而非成员特有数据。静态变量的值可以改变,但不是常量。构造函数用于创建对象时为成员属性赋值,...

C++ 中static 和final的区别是什么
static 是静态变量,它在编译时系统就分配内存,程序结束时才释放。1、在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在类加载的时候被创建并初始化(只被创建初始化一次),对于该类的所有对象来说,staitic成员变量只有一份。2、用static声明的方法为静态方法,在调用该方法时,...

c\/c++(2)
静态局部变量 :局部作用域,只被初始化一次,直到程序结束 生命周期 :静态全局变量、静态局部变量都在静态存储区,直到程序结束才会回收内存。类静态成员变量在静态存储区,当超出类作用域时回收内存。答:能。原因: 因为在 编译时对象 就绑定了 函数地址 ,和指针空不空没关系。定义 ...

静态(s_)、成员(m_)、全局(g_)变量在c++中有什么含义、作用?
成员变量,在每创建一个对象时都会分配一个不同的地址空间,改变其中一个对象的这个变量,并不会影响其他成员的这个变量。成员变量的作用域,也就是有效范围是整个类。全局变量是说明语句不在任何一个类定义、函数定义或复合语句(程序块)中的变量。全局变量所占用的空间在内存的数据区,在程序运行的...

类的静态成员和非静态成员有何区别?
成员变量存储到堆内存的对象中,静态变量存储到方法区的静态区中。3、生命周期不同 成员变量随着对象的出现而出现,随着对象的消失而消失。静态变量随着类的出现而出现,随着类的消失而消失。静态数据成员和普通数据成员区别较大,体现在下面几点:(1)普通数据成员属于类的一个具体的对象,只有对象被创建了...

类中的函数是在内存怎么弄的呀
1.类的结构主要有:静态方法--在代码区,只有一份 静态成员变量--静态数据区(不属于堆栈)普通方法--在代码区,只有一份 普通成员变量--在堆内存,一个对象有一份 局部变量--在栈内存,使用结束后马上弹出结束 非静态方法(函数)在类加载就有,但是不能使用[类.方法名]调用 表面上是this是静态...

C++类的成员函数中创建静态变量会被类的所有对象共享么
是的。成员函数中的静态变量也是全部对象共享的。

相似回答