争怎路由网/网站教程/内容

C++中的static如何用?C++ static用法总结

网站教程2024-06-09 阅读
网站建设是指使用标识语言(markup language),通过一系列设计、建模、和执行的过程将电子格式的信息通过互联网传输,最终以图形用户界面(GUI)的形式被用户所浏览。简单来说,网页设计的目的就是产生网站。简单的信息如文字,图片(GIF,JPEG,PNG)和表格,都可以通过使超文件标示语言、可扩展超文本标记语言等标示语言放置到网站页面上。        C++中的static有哪些用法?相信很多在学习C++的朋友都会问这个问题。今天,绿茶小编整理了C++中static的四种用法,有兴趣的朋友可以来看一看。

        要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样。

        我们通常声明一个变量:

  int a;

  string s;

  其实就是:

  auto int a;

  auto string s;
 

  而static变量的声明是:

  static int a;

  static string s;

  这样似乎可以更有利于理解auto和static是一对成对的关键字吧,就像private,protected,public一样;
 

  对于static的不理解,其实就是对于auto的不理解,因为它是更一般的;有的东西你天天在用,但未必就代表你真正了解它;auto的含义是由程序自动控制变量的生存周期,通常指的就是变量在进入其作用域的时候被分配,离开其作用域的时候被释放;而static就是不auto,变量在程序初始化时被分配,直到程序退出前才被释放。

        也就是static是按照程序的生命周期来分配释放变量的,而不是变量自己的生命周期;所以,像这样的例子:

  void func()

  {

  int a;

  static int b;

  }

  每一次调用该函数,变量a都是新的,因为它是在进入函数体的时候被分配,退出函数体的时候被释放,所以多个线程调用该函数,都会拥有各自独立的变量a,因为它总是要被重新分配的;而变量b不管你是否使用该函数,在程序初始化时就被分配的了,或者在第一次执行到它的声明的时候分配(不同的编译器可能不同),所以多个线程调用该函数的时候,总是访问同一个变量b,这也是在多线程编程中必须注意的!

static用法一、类的静态成员:

  class A

  {

  private:

  static int s_value;

  };

  在cpp中必须对它进行初始化:

  int A::s_value = 0;// 注意,这里没有static的修饰!
 

  类的静态成员是该类所有实例的共用成员,也就是在该类的范畴内是个全局变量,也可以理解为是一个名为A::s_value的全局变量,只不过它是带有类安全属性的;道理很简单,因为它是在程序初始化的时候分配的,所以只分配一次,所以就是共用的;
 

  类的静态成员必须初始化,道理也是一样的,因为它是在程序初始化的时候分配的,所以必须有初始化,类中只是声明,在cpp中才是初始化,你可以在初始化的代码上放个断点,在程序执行main的第一条语句之前就会先走到那;如果你的静态成员是个类,那么就会调用到它的构造函数;
大多数人在上网的时候,都会浏览网页提供给我们的信息。

……

相关阅读