静态成员(static)VS extern

发布时间 2023-08-12 17:44:29作者: 邹木木

static与extern区别

静态成员(static)

  • 静态全局变量:

     限制作用域,只在定义该变量的源文件内有效
    

作用于全局变量时: 叫静态全局变量。表示该变量是私有的,只能在该文件使用。不能通过extern关键字对其引用。

  • 静态局部变量:

      改变局部变量的生存周期,使得该变量存在于定义直到程序运行结束;
      类内声明,类外初始化;
    

作用于局部变量时: 叫静态局部变量,在函数调用时,只有在该函数第一次调用时才对其分配空间和初始化。在函数调用结束时,不对该变量的内存进行释放,值仍然保留。这也是于自动变量的区别。
所有对象共享同一份数据

  • 静态成员变量

      所有对象共享同一个函数;
      静态成员函数不能声明为虚函数、const函数、volatile函数;
      静态成员函数只能访问静态成员变量
    

作用于函数时: 叫静态函数,表示该函数是私有的,只能在本文件中使用,不能通过extern关键字对其引用

extern

  • 本文件: 定义在本文件下面的全局变量,想要在上面使用时需要使用extern关键字对其声明
  • 其他文件:定义在其他文件的全局变量想要在本文件使用时,若该变量未被static修饰时可通过extern关键字在本文件对其声明。即可使用