C++学习---static 有什么作用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++学习---static 有什么作用?相关的知识,希望对你有一定的参考价值。

static 有什么作用? 

面试的时候,很容易问到的基础性问题,也是最容易被大家忽略的问题。

一、static 修饰 类的成员变量

  在class 里面出现一个变量, 比如 :

class Example

{

public:

  static int a;

...

};

  一个成员变量加了static, 那么这个static成员变量是属于整个类的,而不是某个对象。存放的位置呢,也跟普通变量有了区别:

  普通成员变量,存放在stack里面,每个实例化的对象的成员变量,单独保存各自的数据。  

  static成员变量只会存储一份放在data段的rw段

  static 成员变量的声明:

  static 数据类型  变量名称; // 在类的内部

 

  static成员变量的初始化:

  数据类型 类名::静态数据成员 = 初值;   // static成员变量一定要初始化! 初始化在类的外部

 

二、static 修饰成员函数  

  静态成员函数,比如:

  class Example

{

public:

  static int a;

public:

  static int changeAValue(int value);

};

static 修饰类的成员函数的格式:

  static 成员函数名();

static成员函数的意义不在于信息共享,而在于管理static成员变量,完成对static成员变量的封装;

static 成员函数只能访问静态数据成员。原因:非静态成员函数,在调用时this指针(this指针指向当前实例本身)被当做参数传入,而静态成员函数属于类,不属于对象,

没有this指针。

 

以上是关于C++学习---static 有什么作用?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 单例模式(singleton)

C++ 单例模式(singleton)

单例模式与静态变量在PHP中

单例模式与静态变量在PHP中 (转载)

C++单例模式

Go 和 Java 对比学习:单例模式