static

参考博客:

C/C++中STATIC用法总结_baboon_chen的博客-CSDN博客_c++中static的作用和用法

C++中使用static:

   两大特点:

   1.修饰变量:

        在程序运行的时候已经有初始值,分配好了内存空间,每次调用时不再重新赋值而是保留上次函数结束时遗留的值

    2.修饰函数:

         ①修饰类的成员函数时,类的成员函数会有两部分,静态和非静态

             我们可以通过类的对象访问两种函数,例如:A.a() , A.b(),其中a为静态,b为非静态

             但是只能用A: : a来访问静态成员函数,并且该成员函数只需要声明一下即可,不需要返回static类型的值

           tips:静态的成员函数中,只能使用静态参数,如果该成员变量非静态并且被调用,那么就会在类的对象初始化(成员变量赋值)之前生成该函数,就会    报错

例如:

1.类的静态成员

  class A{
  private:
    static int val;
  };
  
        int A::val = 1;

在.cpp中必须给它初始化,使用的时候标注作用域,例: uint a = A::val ;

2.类的静态成员函数

  class A{
  private:
    static int func(int x);
  };
  
  void  A::func(int);
    实现的时候也不需要static的修饰,因为static是声明性关键字,只需要在.h文件中标注static即可

    类的静态函数是该类的范畴内的全局函数,不能访问类的私有成员,只能访问类的静态成员,不需要类的实例即可调用;

    实际上,他就是增加了类的访问权限的全局函数;

3.只在cpp内有效的全局变量

     static int val = 0;

        这个变量的含义是该cpp内有效,但是其他的cpp文件不能访问这个变量;如果有两个cpp文件声明了同名的全局静态变量,那么他们实际上是独立的两个变量;

思考:

     静态修饰的东西,函数和变量属于类,但是又和类的其他成员不一样,它在类初始化时就会自己先分配内存,但是在类实例化的时候才会给生成其它成员

你可能感兴趣的:(C++,c++,开发语言)