C++中的static成员函数以及static成员变量详解「建议收藏」

C++中的static成员函数以及static成员变量详解

大家好,又见面了,我是全栈君。

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成员属性能够被继承,可以在派生类中访问到(前提:原有属性为公有,继承为公有继承),但是存储的只是一份数据,没有进行复制多份;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115099.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TimerTask(addin timer语音)

    其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:Timertimer=newTimer();timer.schedule(newTimerTask(){ publicvoidrun(){ System.out.println(“abc”); }},200

    2022年4月18日
    41
  • 空间矢量脉冲宽度调制(SVPWM)Simulink仿真教程

    空间矢量脉冲宽度调制(SVPWM)Simulink仿真教程目录SVPWM仿真主体结构扇区选择模块XYZ计算模块矢量作用模块切换时间判断模块三角波模块开关信号模块输出信号模块输出结果SVPWM参考文献​SVPWM仿真主体结构扇区选择模块原理基于原理搭建基于原理的s函数扇区输出结果XYZ计算模块原理基于原理搭建模块仿真结果矢量作用模块原理基于原理搭建模块仿真结果切换时间判断模块原理…

    2025年6月17日
    4
  • python将py文件编译成exe文件_怎么把python程序打包成可执行文件

    python将py文件编译成exe文件_怎么把python程序打包成可执行文件1.安装PyInstaller2.指定要打包文件的路径,使用pyinsatll-F“路径”,如果不需要弹出框后缀–noconsole3.在下面这个目录中查找打包好的文件

    2022年8月29日
    3
  • linux常用命令修改文件权限_使用vim在指定目录下创建文件

    linux常用命令修改文件权限_使用vim在指定目录下创建文件chmod  -changefilemodebits:更改文件权限chmod是用来改变文件或者目录权限的命令,但只有文件的属主和超级用户(root)才有这种权限。更改文件权限的2种方式:一、权限字母+操作符表达式二、数字方法(常用)hmod数字权限方法(推进)命令格式:chmod  [数字组合]  文件名chmod[数字组合]目录名-R参数可递归生效(该目录下所有文件或子目录一起改…

    2025年10月30日
    6
  • debian9.5安装教程_debian11安装教程

    debian9.5安装教程_debian11安装教程IPSET是Linux内核中用来建立、维护和查看IP集合的工具,常常与iptables配合使用。在Debian-5.0.3下安装ipsetv2.3.3,遇到了一些问题,最终安装成功。将安装过程及遇到的问题和大家分享。 1安装环境Debian-5.0.3,安装过程中选择内核为2.6.26-2-486。 2用Debian的包管理器aptitude安装ipset安装完成以后

    2022年9月1日
    5
  • 深入理解JVM的垃圾回收机制

    深入理解JVM的垃圾回收机制上一篇博客介绍了Java运行时内存的各个区域。对于程序计数器、虚拟机栈、本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭。并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回收了。因此本篇文章所讲的有关内存分配和回收关注的是Java堆与方法区这两个区域。1、如何判断对象已“死”Java堆中存放着几乎所有的对象实例,垃圾回收器…

    2022年4月29日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号