static的使用
时间:2019-09-28
本文章向大家介绍static的使用,主要包括static的使用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
static的使用
一、用于静态生存期变量
1、什么是静态生存期变量
如果对象生存期与程序的运行周期一样,则它具有静态生存期,如果在函数内部局部作用域中声明具有静态生存期的对象,就需要用到static关键字,该变量就是静态生存期变量。列如:
static int i |
2、局部作用域中静态变量的特点如下:
它不会随每次调用函数都产生一个新的副本,当在定义该变量的同时为他赋初值,它就会被初始化,且该函数被执行完后,下次再调用时,该变量的值会保持上一次的值继续使用,若未被初始化时,该变量会被赋予0值初值。但是对于动态生存期变量,不指定初值意味着初值不确定。 |
下面将通过段代码实现静态变量与具有动态生存期的变量之间的区###运行结果如下
由运行结果显示上列两个函数中虽然都具有相同的变量,但是却不相互影响,并且具有静态生存期的变量只初始化一次,重复多次使用时,会继续上次的值接着使用 |
二、用于类的静态成员、静态函数成员
1、什么是静态数据成员
一个类的所有对象具有相同的属性,如果某个属性为整个类所共有,不属于任何一个具体对象,则采用static关键字来声明为静态成员。
2、静态成员在每个类只有一个副本,由该类的所有对象共同维护和使用,从而实现同一类的不同对象之间的数据共享。
注意:在类中声明静态数据成员是需定义在私有成员中,并且初始化需定义在类外,它们是配套使用的。 |
列如
、、、
class Point
{
private:
static int count; //静态数据成员的声明
};
int Point::count=0; //静态数据成员的初始化
、、、
当想要输出类中静态数据成员时,如果想在声明对象之前,由类中的函数输出这个静态数据的初始化时,若通过类名调用这个函数,那么编译器会报出如下错误。
这时就需要用static定义一个静态函数成员。它的优点就是在类中除了通过对象调用函数外,还可以通过类名调用,而非静态成员函数只能通过对象调用。
以下代码时具有静态数据成员和函数成员的Point类
运行结果
原文地址:https://www.cnblogs.com/wzfs/p/11603510.html
- 分布式系统CAP理论
- 美媒盘点2018年将改变世界的四大技术趋势
- 如果你想深刻理解ASP.NET Core请求处理管道,可以试着写一个自定义的Server
- 路面能发电,智慧交通不遥远
- 小程序:企鹅帝国身后,微信帝国正悄悄露出冰山一角!
- ASP.NET MVC路由扩展:路由映射
- 如何改善遗留的代码库
- ASP.NET的路由系统:根据路由规则生成URL
- ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)
- 工业X.0将至 企业数字化转型该怎么做?
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(2)
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(3)
- 为什么说2018年互联网创业机会将变少
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Redis-Java项目应用(Jedis、SpringBoot整合、工具类模板)
- 微软被指剽窃他人开源作品!作者被迫终止该项目
- 秋招系列 | 推荐岗史上最强面经来袭(上)
- 一个Tomcat 如何部署多个项目?附多种解决方案及详细步骤!
- 初识SpringCloud
- .NET程序设计复习总结
- Ribbon讲解与应用
- break, continue 和 return 的用法及区别
- JavaWeb 图书管理系统
- 深度学习-多分类问题
- umi项目中dva effects异常处理
- Eureka应用
- 深度学习-回归问题
- R语言安装ggbiplot
- IDEA 一键部署 Spring Boot 到 Docker,这个骚操作你会了吗?