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. match 和 search 和 indexOf 查找及 正则表达式的 exec 和 test 用法

    function test(){ var name= "1.087"; var abc = "abd wor66k ne78xt"; var reg = /\d ...

  2. 【CF1225E Rock Is Push】推岩石

    题目描述 你现在在一个\(n×m\)的迷宫的左上角(即点\((1,1)\)),你的目标是到达迷宫的右下角(即点\((n,m)\)).一次移动你只能向右或者是向下移动一个单位.比如在点\((x,y)\) ...

  3. nginx 访问控制之 document_uri

    这就用到了变量$document_uri,根据前面所学内容,该变量等价于$uri,其实也等价于location匹配. 示例1: if ($document_uri ~ "/admin/&qu ...

  4. 【POJ1426】Find The Multiple

    本题传送门 本题知识点:深度优先搜索 | 宽度优先搜索 题意很简单,让我们找一个只有1和0组成的十位数是n的倍数的数. 这题一开始吓到我了--因为Output里说输出的长度最长不超过100位???那是 ...

  5. UDF——查找单元的相邻单元

    Fluent版本:Fluent 19.2 Visual Studio版本:Visual Studio 2013 测试文件及源码下载链接: https://pan.baidu.com/s/1AZ59hs ...

  6. .NET Core 代码安装服务启动

    最近做了一些.NET Core的程序,有在Windows下运行的 有在CentOS 下运行的,Windows下运行的还好,对Windows下还算比较熟悉了,但CentOS 下 每次都是找笔记支持命令 ...

  7. mongo helper

    import datetime import pymongo import click # 数据库基本信息 db_configs = { 'type': 'mongo', 'host': '127.0 ...

  8. Spring中@Bean与@Configuration

    一.Spring中Bean及@Bean的理解[1] Bean在Spring和SpringMVC中无所不在,将这个概念内化很重要,下面分享一下我的想法: 一.Bean是啥 1.Java面向对象,对象有方 ...

  9. 如何优雅地执行dubbo"单测"

    很多小伙伴所在的公司是基于Dubbo来构建技术栈的,日常开发中必不可少要写dubbo单测(单元测试),如果单测数据依赖已有的外部dubbo服务,一般是mock数据,如果数据比较复杂,其实mock数据也 ...

  10. @vue/cli 4.1.1安装

    按照安装步骤,先卸载,再安装,最终,查看vue -V 的版本都是3.8.2,也就是说并没有安装成功,于是,考虑用yarn去安装 1,首先清除缓存: yarn cache clean 2,yarn设置淘 ...