C++ static

  • 非成员函数中

    1、当变量声明为static时,空间将在程序的生命周期内分配,其被存放在在全局数据区。即使多次调用该函数,静态变量的空间也只分配一次,前一次调用中的变量值通过下一次函数调用传递。
    2、静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放。
    #include <iostream> 
    #include <string> 
    using namespace std; 
    
    void demo() 
    { 
        static int count = 0;  // 静态变量 
        cout << count << " "; 
        count++; 
    } 
    
    int main() 
    { 
        for (int i=0; i<5; i++)  
            demo(); //0、1、2、3、4
        return 0; 
    }
    
  • 类中的静态变量

    1、声明为static的变量只被初始化一次,由对象共享,静态变量不能使用构造函数初始化
    2、类中的静态成员变量必须在类内声明,在类外定义,不用加static(被const修饰的除外)
    class TEST
    { 
    public: 
        static int i;  // 类内声明
    
        TEST() 
        { 
            // Do nothing 
        }; 
    }; 
    
    int TEST::i = 1;  // 类内定义
    class TEST
    { 
    public: 
          // 被const修饰的static变量在c++11中可以在类内被直接初始化。
        static const int i=10; 
        TEST() 
        { 
            // Do nothing 
        }; 
    };
    
  • 类中的静态成员函数

    1、静态成员函数也不依赖于类的对象。我们被允许使用对象和’.'来调用静态成员函数。但建议使用类名和范围解析运算符调用静态成员;
    2、静态成员函数仅能访问静态数据成员或其他静态成员函数它们无法访问类的非静态数据成员或成员函数
    3、静态成员函数不接受隐含的 this 自变量。所以,它就无法访问自己类的非静态成员
    4、静态成员函数访问普通成员变量的方法,总结:通过传入对象,代替this指针
    5、非静态可以直接访问静态成员。
  • 静态类

    和变量一样,静态类的生命周期直到程序的结束。在main结束后才会调用静态类的析构函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值