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)
上一篇 2022年2月7日 下午8:00
下一篇 2022年2月7日 下午9:00


相关推荐

  • linux 中的文本编辑器nano[通俗易懂]

    linux 中的文本编辑器nano[通俗易懂]linux中的文本编辑器nanohttps://blog.csdn.net/junxieshiguan/article/details/84104912导言:在linux中,说起文本编辑器,很

    2022年7月2日
    29
  • QStringList去重

    QStringList去重friendGroupName_List=friendGroupName_List.toSet().toList();//去掉重复

    2022年5月27日
    61
  • C/C++ 经典面试题(一)之常考概念【持续更新】

    C/C++ 经典面试题(一)之常考概念【持续更新】题目 1 引用和指针有什么区别 解答 1 定义一个指针变量编译器会为它分配内存 而引用不占用任何内存 2 引用必须在定义时被初始化 指针不必 3 不存在指向空值的引用 但存在指向空值的指针 题目 2 函数参数传递中值传递 地址传递 引用传递有什么区别 解答 1 值传递 会为形参重新分配内存空间 将实参的值拷贝给形参 形参的值不会影响实参的值 函数调用结束后

    2026年3月16日
    2
  • 大型网站架构演化历程

    大型网站架构演化历程大型网站的挑战主要来自庞大的用户 高并发的访问和海量数据 任何简单的业务一旦需要处理数以 P 计的数据和面对数以亿计的用户 问题就会变得棘手 大型网站架构主要就是解决这类问题 本文内容大部分来自 大型网站技术架构 大型网站系统与 Java 中间件实践 这两本书 这两本书很值得一看 强烈推荐 在微信公众号猿 blog 后台 扫描下图二维码 回复关键词 大型网站架构 可以获得这两本书籍的电子版和一张思维

    2026年3月17日
    2
  • [开源夏令营][四] Docker remote API 之 镜像篇

    [开源夏令营][四] Docker remote API 之 镜像篇

    2021年12月1日
    58
  • Java虚拟机(JVM)你只要看这一篇就够了![通俗易懂]

    1.Java内存区域与内存溢出异常1.1运行时数据区域根据《Java虚拟机规范(JavaSE7版)》规定,Java虚拟机所管理的内存如下图所示。1.1.1程序计数器内存空间小,线程私有。字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成如果线程正…

    2022年4月17日
    46

发表回复

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

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