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指针。

时间: 2024-11-08 22:24:02

C++学习---static 有什么作用?的相关文章

java4android (static关键字的作用)

静态成员变量的语法特点 (static String name)    既可以用类来调用,也可以用对象来调用. 静态成员变量不是对象层次的变量,是类层次的.这个类产生的所有对象,都是使用此静态成员变量. 静态函数的语法特点 ( static void talk()  ) 既可以用类来直接调用,也可以用对象来调用 静态函数中不能引用非静态的成员变量 静态代码块的语法特点( static {code}  ) 没有名字, 静态代码块在装载这个类时就被调用,主要作用是给一些静态变量赋初始值. java4

static 关键字的作用-------王志亭

★       我一下要写的关于static 关键字的作用是来源于http://www.cnblogs.com/dolphin0520/p/3799052.html 这个是叫一个梅子的人写,要是你们想更具体的了解可以访问前面的网址. ★ 我这里写的主要是我感觉有用的解析及代码: 1,static 关键字的接是: (1)static方法就是没有this的方法.在static方法内部不能调用非静态方法,反过来是可以的. (2) 而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法

static函数的作用是在链接层面上

http://yonghaowu.github.io/Blog/static_function/ Md格式,原地址阅读体验更佳. 先摆干货,总结:static函数的作用是在链接层面上的. 正如很多C语言书籍里都有提到: 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用. 定义静态函数的好处: <1> 其他文件中可以定义相同名字的函数,不会发生冲突 <2> 静态函数不能被其他文件所用. 基于此,我做了两个测试. A.h里直接有a函数

java基础(五)之static关键词的作用

static关键词的作用 1.静态成员变量的语法特定2.静态函数的语法特定3.静态代码块的语法特定 定义静态成员变量 Person.java class Person{ static int a; } 按照以前可以这么调用 public class Test1{ public static void main(String[] args){ Person person = new Person(); person.a = 10; System.out.println(person.a); } }

static 变量的作用:

概念:静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值.静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见. 1.先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性. 2. static的第二个作用是保持变量内容的持久 存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化.共有两种变量存储在静态存储区:全局变量和static

C语言中static关键字的作用

static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 char a = 'A'; // global variable void msg()  {     printf("Hello\n"

c/c++中static关键字的作用【转】

1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件,一个是a.c,另一个是main.c. //a.c char a = 'A'; // global variable void msg() { printf("Hello\n"); } //main.c int main() { extern char a; // extern varia

关于static/const的作用

这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用. 大多数应试者能正确回答第一部分,一部分能正确回答第二部

20151023-const、static、extern作用

1.关键字const什么含义 const int a; int const a; const int *a; int const *a; int * const a; int const * const a; 前两个的作用是一样的:a是一个常整型数 第三第四个意味着:a是一个指向常整型数的指针(整型数是不可修改的,但是指针可以) 第五个:a是一个指向整形数的常指针(指针指向的整型数是可以修改的,但是指针不能修改) 最后一个意味着:a是一个指向常整型数的常指针(指针指向的整型数是不可修改的,同时指