zoukankan      html  css  js  c++  java
  • c++关键字static的作用

    1.隐藏

      当同时编译多个源文件(.cpp)时,在某一个源文件中用static修饰的全局变量或函数,对其他源文件是隐藏的

    //1.cpp
    int a = 5;
    void fun()
    {
        cout << 666 << endl;
    }
    static int b = 8;
    
    
    //main.cpp
    int main()
    {
        extern int a;
        cout << a << endl;    //输出:5
    
        extern void fun();
        fun();                //输出:666
    
        extern int b;
        cout << b << endl;    //编译错误:b在1.cpp中是static的
    
        return 0;
    }

    2.static使局部变量也具有全局生存周期

    1)静态全局变量,生存周期为整个程序,作用域为定义它的源文件内(隐藏)

    2)静态局部变量,它的生存周期还是整个程序,但是作用域仅限于定义它的函数内,也就是说在其他函数中不能使用它

    int fun()
    {
        static int a = 10;//在第一次进入这个函数的时候,staticj局部变量a被初始化为10,这是a唯一的一次初始化
        --a;
        return a;
    }
    
    int main()
    {
        cout << fun();
        cout << endl;
        cout << fun();
        cout << a << endl;//错误:不能在其他地方使用静态局部变量a
    
        return 0;
    }
    程序输出:
    9
    8

    3.默认初始化变量为0

    1)如果没有给static修饰的变量赋予初始值,则它将被默认初始化为0

    2)全局变量也具备这一特性,某些时候这一特性可以减少程序员的工作量

    4.c++中用static将类成员声明为静态成员

  • 相关阅读:
    《Maven实战》第6章 仓库
    Log4j2中的同步日志与异步日志
    CSDN VIP如何添加自定义栏目
    CSDN VIP如何添加引流自定义栏目
    kubernetes垃圾回收器GarbageCollector Controller源码分析(二)
    java图形验证码实现
    java这个404你能解决吗?
    innodb笔记
    java项目启动脚本
    服务器初始化脚本
  • 原文地址:https://www.cnblogs.com/Joezzz/p/10235207.html
Copyright © 2011-2022 走看看