首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++】静态成员变量 ( 静态成员变量概念 | 静态成员变量声明 | 静态成员变量初始化 | 静态成员变量访问 | 静态成员变量生命周期 )

一、静态成员变量概念 1、静态成员变量引入 在 C++ 类中 , 静态成员变量 又称为 静态属性 ; 静态成员归属 : 静态成员变量 是特殊的成员变量 , 是 类所有的 成员 , 而不是对象所有的成员...; 静态成员变量 提供了 同类对象的共享机制 : 同一个类的 所有实例对象 , 都可以共享访问 想通的 静态成员变量实例 ; 2、静态成员变量声明 静态成员变量 声明 方式 : 使用 static 关键字...static int number; }; 3、静态成员变量初始化 静态成员变量 初始化 : 静态成员变量 是在 类使用时 , 在类的外部 进行 初始化 ; Student 类的 静态成员 成员变量...: 只对 类内部已定义的 静态成员变量 进行单纯的赋值 ; // 在函数中为 类 静态成员变量 赋值 Student::number = 2; 4、静态成员变量访问 静态成员变量访问 : 使用域操作符访问...成员变量访问有两种方式 : 使用 域操作符 访问 类静态成员变量 : 类名::静态成员变量名 ; // 使用 域操作符 访问 类静态成员变量 // 类名::静态成员变量名 cout << "Student

35120

静态成员函数访问静态数据成员【C++】

,为了能处理静态数据成员静态成员函数不能默认引用本类静态数据成员的原因: 当调用一个对象的静态成员函数时,系统会将该对象的起始地址赋予成员函数的this指针。...然而,静态成员函数不属于对象,无this指针。所以静态成员函数不能访问类的默认静态成员静态成员函数和静态数据成员)。...//静态成员函数的类外定义 参数表中创建对象 cout << "x=" << m.x << endl; //<em>静态</em><em>成员</em>函数通过对象访问<em>非</em><em>静态</em>数据<em>成员</em> cout << "y=" <...只要对<em>静态</em>数据<em>成员</em>的值更新一次,就可以保证所有对象都会存取更新后的值 由本例可知:<em>静态</em><em>成员</em>函数不能引用本类<em>非</em><em>静态</em><em>成员</em>并非绝对,只是不可以进行默认的访问,因为编译器不知道应该去寻找哪一个对象。...<em>非</em><em>静态</em><em>成员</em> ; 类名 :: <em>非</em><em>静态</em><em>成员</em> ; 故:实例化对象即可完成对<em>非</em><em>静态</em>数据<em>成员</em>的访问

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

C++静态成员变量静态成员函数小结

静态成员包括静态数据成员静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。...和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。...静态数据成员实际上是类域中的全局变量。所以,静态数据成员需要在类外定义(初始化),而不应该被放在类声明中。 原因是类声明中只是描述如果分配内存并不会真正的分配内存,而定义是一定要分配内存的。...静态成员是“类级别”的,也就是它和类的地位等同,而普通成员是“对象(实例)级别”的。类级别的成员,先于该类任何对象的存在而存在,它被该类所有的对象共享。 其定义方式与全局变量相同。...2.静态成员函数不可以调用类的静态成员

1.8K50

静态变量成员变量的区别 && 成员变量和局部变量的区别

============================================================================= 1)静态变量成员变量的区别: (1):所属不同...:     静态变量:属于类,也称为类变量。     ...成员变量:属于对象,也称为对象变量或实例变量。 (2):在内存中的位置不同:     静态变量:存储于方法区的静态区。     成员变量:存储于堆内存。...(3):生命周期不同:     静态变量静态变量是随着类的加载而加载,随着类的消失而消失。     成员变量成员变量是随着对象的创建而存在,随着对象的消失而消失。...(4):调用不同:     静态变量:可以通过对象名调用,也可以通过类名调用。     成员变量:只能通过对象名调用。

1.5K20

C++之静态成员变量静态成员函数学习总结

一、静态成员变量: 平时我们在写类的时候,类中的成员变量,我们一般是通过对象名来访问public成员变量的,一般private(私有)的成员变量,对象是不能直接访问的;同时我们要明白每个对象的成员变量都是专属的...1、c++中可以定义静态成员变量静态成员变量属于整个类所有 静态成员变量的生命期不依赖于任何对象(上面的程序,每个对象的成员变量是独立的,所以打印出的mCount的值分别为1) 可以通过类名直接访问公有静态成员变量...所有对象共享类的静态成员变量 可以通过对象名 访问公有静态成员变量 2、静态成员变量的特性: 在定义时直接通过static关键字修饰 静态成员变量需要在类外单独分配空间 静态成员变量在程序内部位于全局数据区.../a.out mCount=3 mCount=3 mCount=3 说明,这里静态成员变量不能使用初始化列表去初始化,这里要明白上面说的那句话:静态成员变量需要在类外单独分配空间,换句话说,就是只有在类的外部重新定义静态成员变量才可以存储到静态存储区...静态成员变量隶属于类所有 每个对象都可以访问静态成员变量 静态成员变量在全局数据区分配空间 静态成员变量的生命期是在程序运行期间 二、静态成员函数: 刚刚程序版本二里面其实我们还有一个功能没实现完:随时可以获取当前对象的数目

56830

Java学习笔记之静态方法,静态方法,静态变量静态变量四者之间的关系

Java学习笔记之静态方法,静态方法,静态变量静态变量四者之间的关系 首先明白这几个名词的意思: 静态方法:即类方法,在类之中,以static关键字申明的方法。...静态方法:即成员方法,没有static关键字申明。 使用方法:需要先创建类对象,使用类对象名.成员方法名来进行调用。...静态变量:即成员变量,在类之中,方法之外,没有static关键字申明。 使用方法:需要先创建类对象,使用类对象名.成员变量名来进行调用。...这四者之间的关系 静态方法中可以直接调用同类中的静态成员,但不能直接调用静态成员。...静态方法中调用静态变量,可以通过创建类的对象,然后通过对象来访问静态变量 静态方法中可以通过类名.静态方法名来调用,但不能直接调用静态方法,需要通过对象来访问静态方法 静态方法中可以通过类名.

67420

【C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

调用 静态成员函数 s.fun(); 4、静态成员函数只能访问静态成员 静态成员函数内容要求 : 静态成员函数 只能访问 静态成员变量 其他静态成员函数 静态成员函数 不能访问 静态成员变量静态成员函数...静态成员 ; 如果在静态成员函数中 , 访问静态成员 , 会报如下错误 : 1>------ 已启动生成: 项目: HelloWorld, 配置: Debug Win32 ------ 1>Hello.cpp...进行的 ; 在 Student 类中定义静态成员函数 , 使用 static 关键字修饰函数 ; 注意 : 不要在 静态函数中 访问 静态成员 , 否则会报错 " 对静态成员“Student::m_age...”的非法引用 " ; static void fun() { // 静态成员函数 中 访问静态成员会报错 // error C2597: 对静态成员“Student::m_age”的非法引用...静态成员变量 // 使用 域操作符 访问 类静态成员变量 // 类名::静态成员变量名 cout << "Student::number = " << Student::number << endl

30820

Java中静态变量(类变量)、实例变量、局部变量成员变量

age; //成员变量、实例变量 private int ID; //成员变量、实例变量 public static final String school = "卡塞尔学院";...//成员变量静态变量(类变量) public static String level = "SSS"; //成员变量静态变量(类变量) public int getAge...成员变量:作用范围是整个类,相当于C中的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;成员变量包括实例变量静态变量(类变量); 实例变量:独立于与方法之外的变量,无static修饰,...声明在一个类中,但在方法、构造方法和语句块之外,数值型变量默认值为0,布尔型默认值为false,引用类型默认值为null; 静态变量(类变量):独立于方法之外的变量,用static修饰,默认值与实例变量相似...,一个类中只有一份,属于对象共有,存储在静态存储区,经常被声明为常量,调用一般是类名.静态变量名,也可以用对象名.静态变量名调用; 局部变量:类的方法中的变量,访问修饰符不能用于局部变量,声明在方法、构造方法或语句块中

2.2K20

Java基础——成员变量、局部变量静态变量的区别

之前在刚开始学习Java的时候,就谈了谈Java基础中的变量,虽然知道这货以后会经常用到,但没想到了基本语法这里,竟然有冒出来了成员变量、局部变量静态变量。...静态变量随着类的加载而存在,随着类的消失而消失。 2、调用方式不同 成员变量只能被对象调用。...静态变量可以被对象调用,还可以被类名调用。 3、别名不同 成员变量也称为实例变量静态变量也称为类变量。...4、数据存储位置不同 成员变量存储在堆内存的对象中,所以也叫对象的特有数据。 静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。...列表对比: 成员变量、局部变量静态变量的区别 成员变量 局部变量 静态变量 定义位置 在类中,方法外 方法中,或者方法的形式参数 在类中,方法外 初始化值 有默认初始化值 无,先定义,

97640

静态成员

静态成员static成员变量static成员函数银行账户管理(含利率) static成员变量 静态成员为所有类的对象所共有 内存是程序运行时分配 使用前必须初始化且只能初始化一次 初始化不能在类定义中...,通过作用域限定符初始化 类型 类名::变量名=值; 类似全局变量,和全局变量相比: 作用域在类中,可以避免与其他类成员或者全局对象的名字冲突 可以封装,static成员可以是私有的,而全局对象不可以...直观表现出与某个类的关联,清晰地反映程序员的意图 static成员函数 静态成员函数为所有类对象所共有,不再属于对象,不需要通过对象访问 static成员函数没有this指针,所以静态成员函数不可以访问静态成员...只能访问静态成员静态成员静态变量静态成员函数可以访问静态成员 静态成员示例: 银行账户管理(含利率) #include #include using namespace

56820

JAVA_静态泛型方法及静态泛型成员变量

参考链接: Java中的静态方法与实例方法 #1.泛型类中的静态方法不能使用类的泛型,而应该将该方法定义为泛型方法  1.错误示范:  class demo{     public static...就泛型类而言,类实例化时才能传递真正的类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数时,静态方法就已经加载完成。显然,静态方法不能使用/访问泛型类中的泛型。 ...这和静态方法不能调用普通方法/访问普通变量类似,都是因为静态申明与静态申明的生命周期不同。 ...#2.不能定义静态泛型变量  1.原因:  由于静态变量在java程序一运行时就已经被载入内存,而此时它的类型无法确定,而开辟空间必须知道类型,两者矛盾。

5.4K20

JVM运行时的数据区,静态变量,成员变量,类变量

堆:存放对象实例和数组 方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码和编译加载的数据等。运行时常量池是方法区的一部分,用于存放编译器生成的各种字面量和符号引用。...局部变量成员变量的区别 ①声明的位置 局部变量:方法体们中,形参,代码块们中 成员变量:类中方法外 - 类变量:有static修饰 - 实例变量:没有static修饰 ②可用的修饰符 局部变量...:final 成员变量:public、protected、private、final、static、volatile、transient ③值存储的位置 局部变量:栈 实例变量:堆 类变量:方法区...④作用域 局部变量:从声明处开始,到所属的]结束口实例变量:在当前类中“this.”(有时this.可以缺省),在其他类中“对象名.”访问 类变量:在当前类中“类名.”...或“对象名.”访问 ⑤生命周期 局部变量:每一个线程,每一次调用执行都是新的生命周期口 实例变量:随着对象的创建而初始化,随着对象的被回收而消亡,每一个对象的实例变量是独立的 类变量:随着类的初始化而初始化

1K20

Java中类的初始化过程:(静态成员变量静态代码块,普通成员变量,代码块初始化顺序)

初始化过程是这样的: 1.首先,初始化父类中的静态成员变量静态代码块,按照在程序中出现的顺序初始化; 2.然后,初始化子类中的静态成员变量静态代码块,按照在程序中出现的顺序初始化; 3.其次,...初始化父类的普通成员变量和代码块,在执行父类的构造方法; 4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; 类的加载顺序: 父类静态成员变量静态块>子类静态成员变量静态块>...父类普通成员变量静态块>父类构造函数>子类 普通成员变量静态块>子类构造函数 静态代码块:随着类的加载而执行,而且只执行一次 静态代码块:每创建一个对象,就执行一次静态代码块 关于各个成员简介

30730

C++ 静态数据成员静态成员函数

在类中的数据成员成员函数定义或声明前以static关键词开头,即构成静态数据成员静态成员函数。...3.静态数据成员的特性 (1)静态数据成员的属性: 静态数据成员属于类,而不属于某一个对象。...静态成员函数 和静态数据成员类似,静态成员函数一样也是在前面加入static关键字。...由于静态成员函数只能访问本类中的静态数据成员,而无法访问静态数据成员,这样使程序设计更加清晰。 3.静态数据成员的特性 (1)静态成员函数的属性: 静态成员函数属于类,而不属于某一个对象。...(2)静态成员函数的访问: 静态成员函数只能访问本类中的静态数据成员静态成员函数可以访问本类中的静态数据成员静态数据成员

1.4K50

Java 菜鸟入门 | Java中的静态变量、实例变量、局部变量成员变量

age; //成员变量、实例变量 private int ID; //成员变量、实例变量 public static final String school = "卡塞尔学院";...//成员变量静态变量(类变量) public static String level = "SSS"; //成员变量静态变量(类变量) public int getAge...成员变量 作用范围是整个类,相当于 C 语言中的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;成员变量包括实例变量静态变量(类变量)。...静态变量(类变量) 独立于方法之外的变量,用 static 修饰,默认值与实例变量相似,一个类中只有一份,属于对象共有,存储在静态存储区,经常被声明为常量,调用一般是类名.静态变量名,也可以用对象名.静态变量名调用...,随对象的消失而消失 随方法的调用而存在,随方法的运行结束而消失 作用域 所属大括号 总结 以上就是关于 Java 编程中,静态变量、类变量、实例变量、局部变量以及成员变量之间的相关区别了。

1.5K20

【面试题精讲】Java静态方法为什么不能调用静态成员?

静态方法通常用来执行与类相关的操作,例如计算、转换等。 静态成员(non-static member)指的是类的实例变量和实例方法,它们需要通过对象实例才能访问和调用。 2....为什么静态方法不能调用静态成员静态方法不能调用静态成员的原因是:静态方法在没有对象实例的情况下就可以被调用,而非静态成员必须依赖于对象实例才能访问。...例如: public class MyClass {     private int num; // 静态成员变量     public static void myStaticMethod() {...        MyClass obj = new MyClass();         obj.num = 10; // 访问静态成员变量         obj.myNonStaticMethod...为了解决这个问题,可以在静态方法内部创建对象实例来访问和调用静态成员,或者将静态成员改为静态成员。但需要注意,在设计程序时要合理使用静态方法和静态成员,并根据具体需求选择适当的方式。

36930

python类成员变量和实例成员变量

#speed实例成员变量     def drive(self,distance):     print 'need %f hour(s)'% (distance/self.speed)   class...  c3.test = 'c3_test'   print c2.test   print c3.test   print Car.test   print   print '情形2: c2尚未对类成员变量...,c3中对test进行过修改, car不变  Car_original  c3_test  Car_original  情形2: c2尚未对类成员变量test进行过修改,类car中test成员改变  Car...Car test: Car_changed_again  c2 test: c2_test  c3 test: c3_test  分析;  test是类变量  speed, fuel是实例变量  一个类的类变量为所有该类型成员共同拥有...,该对象才拥有自己单独的类成员副本,此后再通过类本身改变类成员时,该实例对象的该类成员不会随之改变;实例变量是在实例对象初始化之后才有的,不能通过类本身调用,所以也不存在通过类本身改变其值,实例成员属于实例本身

1.4K00
领券