• static


    static变量特点(static方法类似):

    1)static变量在全局数据区分配内存,并始终驻留在全局数据区,直到程序运行结束。

    2)静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的,这样可避免不同文件中的命名冲突。

    3)静态变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0。

    好处: 静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突。

    面向对象的static特点:

    1) 出现在类体外的函数定义不能指定关键字static;

    2)静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

    3)非静态成员函数可以任意地访问静态成员函数和静态数据成员;

    4)静态成员函数不能访问非静态成员函数和非静态数据成员;

    5)由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;

    6)调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接使用如下格式:

    <类名>::<静态成员函数名>(<参数表>)                 //调用类的静态成员函数。

    例子:

    #include<iostream>  
    using namespace std;  
      
    class myclass  
    {  
    private:  
        int a;
        static int b;  //声明静态数据成员,不可在声明时初始化
        static int c;  //声明静态数据成员,不可在声明时初始化
        static const int d=10;  //声明静态const数据成员,可在声明时初始化  
    public:  
        int fun1(); 
        static int fun2();  
    };  
      
    int myclass::b = 0;   //定义并初始化静态数据成员,不能出现static  
      
    int myclass::fun1()  
    {  
        this->a = 10;                            
        this->c = 20;          //非static函数可操作static变量
        cout<<"a="<<a<<endl;
        cout<<"c="<<c<<endl;
        return 0;
    }  
    
    int myclass::fun1()  
    {  
        //a = 10;           static函数不可操作非static变量                             
        c = 100;          
        //cout<<"a="<<a<<endl;
        cout<<"b="<<b<<endl;
        cout<<"c="<<c<<endl;
        return 0;
    } 
    
      
    int main(void)  
    {  
        myclass A;  
        A.fun1();
        A.fun2();
        //myclass::fun1();          //错
       myclassfun2();
        return 0;  
    } 
    

      

  • 相关阅读:
    HDU 2013(递归)
    紫书搜索 习题7-6 UVA
    紫书搜索 习题7-4 UVA
    紫书搜索 习题7-3 UVA
    紫书搜索 习题7-2 UVA
    紫书搜索 习题7-1 UVA
    紫书搜索 例题7-10 UVA
    紫书搜索 例题7-13 UVA
    紫书搜索 例题7-12 UVA
    紫书搜索 例题7-9 UVA
  • 原文地址:https://www.cnblogs.com/ManMonth/p/3196822.html
Copyright © 2020-2023  润新知