美文网首页C++
关于static关键字

关于static关键字

作者: 我是大宝啊 | 来源:发表于2016-08-05 10:22 被阅读0次

    1. 在C语言中的用法

    在C语言中,static关键字意味着:隐藏

    • static变量存储在静态数据区,在程序一开始运行时就完成内存分配工作,因而在定义时必须进行初始化
    • 在函数体内定义的局部变量,在该函数下次被调用时,继续保持原有值。这相当于实现了“全局变量的功能”,但仅在该函数体内可见
    • 在函数体外定义的变量,以及static函数,在该模块(文件)中可见;

    2. 在C++中的用法

    对于普通的static变量及函数,其作用与C语言类似。而在面向对象部分,

    • static成员变量及static成员函数属于整个类,不属于任何一个对象。
    • 对于static成员变量来说,由于需要在程序一开始运行时就分配内存,而类定义体只是声明了一个类,并不会分配实际的内存空间。因而,static成员变量必须在类定义体外进行初始化。不过,有一个例外情况,static常量整型数据成员或表达式可以在类定义体内完成初始化
    • 而对于成员函数来说,既可以在类定义体内,也可以在类定义体外完成定义
    • 需注意的是,static关键字只需要在类定义体内使用一次,当在类定义体外进行成员变量初始化或成员函数定义时,不再需要重复使用。

    最后,static成员变量与non-static成员变量相比,主要有两点不同:

    1. static成员变量允许是incomplete type,也就是说,
    class Foo {
    private:
        static Foo a; //ok
        Foo b; //not ok
    }
    
    1. static成员变量可以作为成员函数的default argument。

    最后的最后,关于C++类具体如何使用static变量及static函数,可参考这篇文章
    关于C++类实例的内存分配,可参考这篇文章

    相关文章

      网友评论

        本文标题:关于static关键字

        本文链接:https://www.haomeiwen.com/subject/swocsttx.html