C++之 static 关键字

C++中的关键字 static,顾名思义表示静止、静态。

1. 作用于函数内部的局部变量

局部作用域静态变量的特点:当一个函数返回后,下一次再调用时,该变量还会保持上次的值,函数内部的静态变量只开辟一次空间,且不会因为多次调用产生副本,也不会因为函数返回而失效。

注意:

  1. 普通局部变量如果未赋予初值,编译器会报错;
  2. 当局部变量加上 static 后,定义时如果未赋予初值,则会默认初始化为 0

2. 作用于类的成员

解决同一个类的不同对象之间数据和函数共享问题

2.1 作用于类的数据成员

静态成员在每一个类中只有一个副本,由该类所有对象共同维护和使用,从而实现同一个类的不同对象的数据共享。需要注意:

  • 使用 类名::标识符 的方式访问静态数据成员,因为静态数据成员不属于任何一个对象
  • 对静态数据成员初始化,在类定义外进行,以这种方式专门为他们分配空间。如果直接在类内定义静态数据成员,编译器则会报错

2.2 作用于类的函数成员

静态成员函数就是使用 static 关键字声明的函数成员,同静态数据成员一样,静态成员函数也属于整个类,由该类所有对象共同拥有,为所有对象共享

(1)静态成员函数主要用于处理该类的静态数据成员,可以直接调用静态数据成员。如果访问非静态成员,要通过对象来访问。

class Person {
public:static void findPerson(Person person);
private:int age;static int sex;
};
void Person::findPerson(Person person)
{cout << age;     // 对 age 的引用是错误的cout << person.age;   // 正确cout << sex;     //对 sex 的引用是正确的的,引用静态数据成员
}

(2)在类外使用j静态成员函数

  • 使用 类名 :: 函数名 操作符来调用静态成员函数
  • 使用 类.函数名 调用

C++之 static 关键字相关推荐

  1. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  2. Java 静态变量,静态方法,静态常量(java static 关键字)

    Java 静态变量,静态方法,静态常量  就是变量 ,方法,常量前面添加了static 关键字 为什么要使用静态的呢 有时候在处理问题时会需要两个类在同一个内存区域共享一个数据, 不如现在 Main ...

  3. static关键字用法

    static关键字 1.修饰成员变量 在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句 ...

  4. Java中的static关键字的用法

    1.静态方法 static:通常在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: (1)它们仅能调用其他的static方法. (2 ...

  5. java的static关键字

    java的static关键字 静态变量和静态方法 static关键字最基本的用法是: 1.被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来 2.被static ...

  6. 面试季,Java中的static关键字解析

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面 ...

  7. c++语言static作用,详解c++中的 static 关键字及作用

    注:若没有特指是 静态成员时,默认都是普通成员: 1 类中的普通成员 类中的成员变量 和 成员函数 是分开存储的.其中, 1)每个对象都有独立的成员变量:成员变量可以存储在 栈空间.堆空间.全局数据区 ...

  8. static关键字了解解析

    什么是static关键字 static关键字我们经常接触,不过我们一直没有讨论过它到底是什么,有什么具体的作用,那static关键字是什么呢,有啥用呢? static是静态的意思,是一个修饰符,就像是 ...

  9. Java中的static关键字详解

    ** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...

  10. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

最新文章

  1. 根据IP查找在交换机上的端口
  2. 采购订单的审批状态异常的处理,审批状态为:预审批或是处理中的单据
  3. python读取txt文件-python txt文件的写入和读取
  4. 文巾解题 810. 黑板异或游戏
  5. swift怎么调用Java,Swift完成UIAlertController的调用
  6. java字符串深克隆_Java中对象的深复制(深克隆)和浅复制(浅克隆)之序列化...
  7. Qt文档阅读笔记|Qt实践| HTTPS知识点-获取某站点SSL证书
  8. wps的流程图怎么导出_还在当灵魂画手?WPS教育版“绘图工具”助你做大牛—思维导图篇...
  9. EMC之对象参考1 -- 对象基本知识
  10. CCF NOI1170 质因数分解
  11. lisp线段两端同时缩短的命令_老杨讲禅——线段与特征序列(1)
  12. bug4-UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed...
  13. 用fpga实现永磁同步电机控制_永磁同步电机控制系统仿真系列文章—旋转变压器...
  14. Dev-C++配置问题
  15. XPT2046 四线电阻式触摸屏
  16. 天啦噜,小白后台的一波新功能,看完世界杯 看这里!(最后有福利 哦~~)
  17. 纯css实现手风琴效果_创建纯CSS手风琴的4种方法
  18. 离职了半年了,大家觉得我为啥离职呢?
  19. i5 13600K和i5 12600k差距
  20. Android进程间通信总结

热门文章

  1. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例
  2. 重装系统后不重装matlab的解决办法
  3. 解决winxp网上邻居共享问题的方法
  4. indesign选中不了图片删除_(54)批量给图片加上说明文字
  5. rust服务器假人文件,rust游戏手机版-rust手游预约(腐蚀游戏手机版)-乐游网安卓...
  6. php面向对象的概括图解,简单介绍PHP面向对象
  7. python截取视频图像_python工具-将视频按帧截取图片(附代码)
  8. sourceinsight4 quicker._我要以一打十!Quicker:新一代Windows必备效率神器!
  9. 无障碍开发(四)之ARIA aria-***状态值
  10. Webshell免杀绕过waf