static关键字的用法:

1)将全局变量修饰为静态全局变量

存储在静态存储区,整个程序运行期间一直存在

静态全局变量在声明它的文件之外是不可见的,只要声明它的文件可见,而普通的全局变量则是所有文件可见

2)将局部变量修饰为静态局部变量

存储在静态存储区

作用域仍为局部作用域,但是当局部变量离开作用域之后,并没有销毁,而是仍然存储在内存中,只不过目前暂时不能对它进行访问,直到该函数再次被调用,并且值不变,只会被初始化一次

#include<stdio.h>
int fun()
{
static int count = ; //在第一次进入这个函数的时候,变量a被初始化为10!并接着自减1,以后每次进入该函数,a
return count--; //就不会被再次初始化了,仅进行自减1的操作;在static发明前,要达到同样的功能,则只能使用全局变量: }
int count = ;
int main(void)
{
printf("global\t\tlocal static\n");
for(; count <= ; ++count)
printf("%d\t\t%d\n", count, fun());
return ;
}
/*
程序运行结果:
global local static
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
*/

3)将普通函数修饰为静态函数

静态函数只在声明它的文件中可见,所以不会同其他cpp中的同名函数引起冲突

4)将类的成员变量修饰为静态成员变量

静态成员变量是属于类的,而不是属于对象的,静态成员变量可以实现多个对象之间的数据共享,并且静态成员变量还不会破坏隐藏的原则,对多个对象来说,静态成员变量只存储一处,供所有对象共用

5)将类的成员函数修饰为静态成员函数

静态成员函数同样是属于类的,而不是属于对象,需要注意的是在静态成员函数的实现中不可以直接引用类中的非静态数据成员,但是可以直接引用静态成员,如果非要引用非静态的成员,则可以通过对象来引用

static关键字的作用:

1)作用域隐藏

当编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,static可以用作函数和变量的前缀,对函数来讲,static的作用仅限于隐藏

2)保持变量内容的持久

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一一次初始化

3)默认初始化为0(static变量)

4)静态成员函数和静态成员变量是属于类的,所有对象只有一份拷贝,所以不能将静态函数设置为虚函数(虚函数是来实现多态的,静态成员属于类而非对象,没有多态的概念)

【C++】static关键字有哪些用法?其主要作用是什么?的更多相关文章

  1. static关键字的新用法

    static关键字的新用法和总结: static这个关键字,也可以像“self”一样,代表“当前类”,用于访问一个类的“静态属性或静态方法”: 但, static,在应用中,更灵活,因此更常见! 因为 ...

  2. static关键字的用法

    静态变量和静态方法 static关键字的基本用法: 1.修饰变量:被static修饰的变量属于类变量,可以用类名.变量名来引用,而不用直接new一个对象来引用. 2.修饰方法:被static修饰的方法 ...

  3. C语言学习及应用笔记之二:C语言static关键字及其使用

    C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些.我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂. 一般来说static关键字的常见用 ...

  4. Java中static关键字的定义

    1.static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法.以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成 ...

  5. (转)Java中的static关键字解析

    转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...

  6. Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  7. (转)Java中的static关键字解析

    转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...

  8. Java中的static关键字解析 转载

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...

  9. Java再学习——深究static关键字

    一.static关键字的用途 可以在没有创建对象的情况下来进行(方法/变量)调用.也就是,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. ...

随机推荐

  1. Navicat连接oracle,出现Only compatible with oci version 8.1

    与本地oracle连接的时候,一般没问题,sqlplus和oci都是本地oracle自带的,(设置: 工具->选项->oci) 分别为:     oci:D:\app\pcman\prod ...

  2. 清华大学&中国人工智能学会:2019人工智能发展报告

    2019年11月30日,2019中国人工智能产业年会重磅发布<2019人工智能发展报告>(Report of Artificial Intelligence Development 201 ...

  3. Django3 的服务器搭建

    进入python虚拟环境 执行以下 命令 source env/bin/active 激活并切换虚拟环境 安装 pip3 install django 创建django项目 django-admin ...

  4. 一起学Makefile(二)

    Makefile基本概念示例 新建一个Code文件夹来测试一个简单的makefile 目录结构如下: 源码如下: makefile依赖: 一般在编写makefile之前都需要先分析清楚整个工程各个模块 ...

  5. [golang]数据库字典生成器-dataDictionary

    dataDictionary 介绍 生成数据字典 应用场景 根据mysql数据库生成html格式数据字典,目前仅支持macos/linux/windows 使用步骤 运行程序 windows: dat ...

  6. Debian系Linux 发行版 源配置说明

    概述: 本文是在逛论坛是的发现,借鉴过来,以便学习.源列表主文件 /etc/apt/sources.list同时也可创建独立的源配置文件到 /etc/apt/sources.list.d/* 下 so ...

  7. 分析WordPress数据表之评论表(功能篇)

    数据表分析 wp_comments(评论表) 该表字段,如下:comment_ID(评论ID)comment_post_ID(评论文章ID)comment_author(评论者用户名)comment_ ...

  8. [1-2] Dependence-Aware Service Function Chain Design and Mapping

    文献名称:Dependence-Aware Service Function Chain Design and Mapping 文献类型(期刊.硕论.博论):会议:Globecom 发表年份:2017 ...

  9. BIND配置

    一,简介 相对于存储和大数据领域,CDN是一个相对小的领域,但行行出状元,BIND就是CDN领域的蝉联N届的状元郎.BIND是一款非常常用的DNS开源服务器,全球有90%的DNS用BIND实现.值得一 ...

  10. 权重轮询调度算法(WeightedRound-RobinScheduling)

    权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现 ----参考Nginx中负载均衡算法实现 这里主要参考这篇文章的实现: Nginx 负载均衡-加权轮询策略 ...