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


相关推荐

  • pycharm基本操作_pycharm用法

    pycharm基本操作_pycharm用法0前言1官方快捷键2自定义快捷键0前言1官方快捷键Ctrl+快捷键说明Ctrl+鼠标左键/B点击变量应用处,到达变量定义处点击变量定义处,显示变量应用列表Ctrl+C/X/V复制/剪切/粘贴Ctrl+D现场复制粘贴选中的区域或当前行Ctrl+F/R开启查找/替换功能,开启时自动填写选中的字符Ctrl+H显示当前class的层次结构Ctrl+S全部保存Ctrl+W扩大光标选中范围Ctrl.

    2022年8月28日
    7
  • 有源低通滤波器 vs. 有源带通滤波器 vs. LC滤波器「建议收藏」

    有源低通滤波器 vs. 有源带通滤波器 vs. LC滤波器「建议收藏」在做一个小东西,想省成本用F407内部的DAC生成Sin输出(100Hz,1kHz,10kHz,100kHz),但是407DAC能力有限,当要输出100kHz的Sin曲线的时候一个周期只能11个点左右,示波器上能看到明显的阶梯,需要一个滤波器。一直纠结有源低通,有源带通,无源LC滤波。滤波器可以通过TI的滤波器设计软件FilterPro来设计,非常简单,有一点就是运放的增益带宽积,同频率下…

    2022年5月2日
    47
  • 降维

    降维

    2021年5月20日
    141
  • mysql explain扫描行数_mysql explain扫描行数问题

    mysql explain扫描行数_mysql explain扫描行数问题MySQL的Explain的Type中,Rang跟Ref有什么区别?type中的各个意思|ALL|全表扫描|index|索引全扫描|range|索引范围扫描。mysqlexplaintypeindex和ref的区别type=index,索引全扫描,MySQL遍历整个索引来查询匹配的行:selectusernamefromuser;type=ref,使用非唯一…

    2022年10月8日
    4
  • 简单分析RLP编码原理

    简单分析RLP编码原理RLP 编码是以太坊数据序列化的主要方法 本文介绍 RLP 编码的主要规则和原理分析 RLP 编码具有较好的数据处理效率 尤其是将长度和类型统一作为前缀 实际上 RLP 是基于 ASCII 编码的一种结构化扩充 既能表示长度还能表示类型 是一种非常紧凑的结构化编码方案 RLP RecursiveLen 递归长度前缀 是一种编码算法 用于编码任意的嵌套结构的二进制数据 它是以太坊中数据

    2026年3月17日
    2
  • 基于canal的client-adapter数据同步必读指南

    基于canal的client-adapter数据同步必读指南

    2020年11月19日
    211

发表回复

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

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