大家好,又见面了,我是全栈君。
static成员变量,在编程中我们时常都会遇到,那么你是否对static变量以及static成员函数有一定深入的认识呢?
static定义的成员变量,存储的区域是内存四区(栈区、堆区、全局区、代码区)中的全局区,在程序运行之前就已经生成在全局区中,直到程序运行结束才会被系统释放。
class Student {
private:
static int m_rate; // 类内定义static变量
public:
static void set_rate(const int& x) {
m_rate = x; }
};
int Student::m_rate = 5; // 类外初始化static变量
int main()
{
Student::set_rate(6); // static 成员函数可以直接使用类名进行访问,也可以使用对象进行调用访问
system("pause");
return 0;
}
在C++中有时会定义一些static变量,同时也会定义一些static成员函数。对于static成员函数以及属性的调用需要注意的点有以下几个:
1.static成员函数的调用的成员变量(属性)只能够是static成员属性,不能够调用普通成员变量属性(因为编译器无法确定调用的是哪个对象的成员属性);
2.static成员变量(属性)并不占用类的内存空间,static成员变量并不存储在类中,存储在全局区;
3.static成员变量(属性)时所有对象共同拥有的一份变量,并不属于任何一个对象成员;
4.static成员属性以及static成员函数都不存在this指针(并不属于任何一个成员);
5.static成员属性能够被继承,可以在派生类中访问到(前提:原有属性为公有,继承为公有继承),但是存储的只是一份数据,没有进行复制多份;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115099.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...