zoukankan      html  css  js  c++  java
  • C++类中的Static关键字

    静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问,而静态成员函数可不建立对象就可以被使用。
      或者说静态函数与一般函数没有太大的区别,只是访问有限制,静态变量跟一般的全局变量的区别就是访问有限制。

    static变量

    static变量不像普通的变量,static变量独立于一切类对象处在。static修饰的变量先于对象存在,所以static修饰的变量要在类外初始化。因为static是所有对象共享的东西嘛,必须要比对象先存在的

     

    class test
    {
    private:
    public:
        static int i;
    };
    int test::i = 100;//此句包含了声明和赋值,初始化不受private和protected访问限制,但是若是priivate,下面main函数就无法访问
    int main()
    {
        cout << test::i << endl;
        return 0;
    }
    

      

    好处:用static修饰的成员变量在对象中是不占内存的,因为他不是跟对象一起在堆或者栈中生成,用static修饰的变量在静态存储区生成的,所以用static修饰一方面的好处是可以节省对象的内存空间。所以一般类const变量一般改为static const变量,可以节省一些空间。

        -静态成员变量属于整个类所有
        -静态成员变量的生命期不依赖于任何对象,为程序的生命周期
        -可以通过类名直接访问公有静态成员变量
        -所有对象共享类的静态成员变量
        -可以通过对象名访问公有静态成员变量
        -静态成员变量需要在类外单独分配空间
        -静态成员变量在程序内部位于全局数据区 (Type className::VarName = value)

    static成员函数          

    static函数也是类函数,所以在写定义时也要写明属于哪个类。与不同类函数不同的是,它没有传入this指针,正因为没有this指针,所以static类成员函数不能访问非static的类成员,只能访问 static修饰的类成员。
      静态成员函数不可以同时声明为 virtual、const、volatile函数。

    类的成员函数有如下特性:    -静态成员函数是类的一个特殊的成员函数
        -静态成员函数属于整个类所有,没有this指针
        -静态成员函数只能直接访问静态成员变量和静态成员函数
        -可以通过类名直接访问类的公有静态成员函数
        -可以通过对象名访问类的公有静态成员函数
        -定义静态成员函数,直接使用static关键字修饰即可

          

  • 相关阅读:
    基于webpack的react脚手架
    关于密码的简单加密
    移动端日期控件
    JS中如何巧妙的用事件委托
    JS中关于正则的巧妙操作
    call,apply,bind
    vue常用笔记
    高性能的js第三方库——lodash、 Underscore、async、md5及moment
    Nightwatch——自动化测试(端对端e2e)
    for循环的耗时问题
  • 原文地址:https://www.cnblogs.com/hai5111/p/10625513.html
Copyright © 2011-2022 走看看