首页 > 试题广场 >

C++中static关键字作用有哪些?

[问答题]
C++中static关键字作用有哪些?
推荐
1、隐藏:当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏.
2、static的第二个作用是保持变量内容的持久:存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,
说到底static还是用来隐藏的。虽然这种用法不常见
3、static的第三个作用是默认初始化为0(static变量)
4、C++中的作用
1)不能将静态成员函数定义为虚函数。   
2)静态数据成员是静态存储的,所以必须对它进行初始化。 (程序员手动初始化,否则编译时一般不会报错,但是在Link时会报错误)  
3)静态数据成员在<定义或说明>时前面加关键字static。    
编辑于 2015-07-26 21:44:10 回复(0)
参见:<a href="http://www.cnblogs.com/webary/p/4754522.html">C/C++常见笔试面试题</a>
发表于 2015-09-05 18:44:19 回复(0)
主要作用:
1.隐藏变量:当两个文件中存在全局变量时,同过extern关键字可以引用不同文件中的变量。如果加入static关键字,全局变量的作用域在文件内,其他文件无法访问。
2.全局的生命周期,其实static变量就相当于全局变量,可能生命周期是全局的。
3.初始化变量是0.和全局变量一样,静态变量初始化时是0
4.c++类的静态变量,属于类的,而不是一个对象的
发表于 2015-05-31 15:08:52 回复(0)
static关键词作用:
1、作用域隐藏。当一个工程有多个文件的时候,用static修饰的函数或变量只能够在本文件中可见,文件外不可见。
2、全局生命周期。用static修饰的变量或函数生命周期是全局的。被static修饰的变量存储在静态数据区。
3、static修饰的变量默认初始化为0.
4、static修饰的变量或函数是属于类的,所有对象只有一份拷贝。
因此,不能够将静态函数设置为虚函数。
发表于 2015-08-21 09:31:23 回复(0)
static关键字至少有下列作用:
(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(在其他模块用需要使用using namespace)
(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
发表于 2015-07-16 16:59:24 回复(1)
static 声明的变量,静态存储,具有内部链接性, 全局变量是静态存储,具有外部链接性 static成员变量不能在类中初始化,可以在成员函数定义的源文件中进行初始化 static成员函数不能被对象调用,而且只能使用静态成员变量,一般用来记录创建对象的个数
发表于 2017-06-19 21:18:49 回复(0)
static:
1.保证了被static修饰的变量或者函数只能在本模块(文件)中使用。
2.只能初始化一次,不能重复初始化。
3.对于类中的static变量或者函数,只有一份拷贝存在并且属于类,不需要对象即可调用。
发表于 2015-07-26 10:51:49 回复(0)
1.在函数内部,static变量的作用范围为本函数内,static变量只被分配一次,在下次调用的时候维持上次的值
2.在模块内,其作用于范围是有限制的,即如果一个变量被声明为静态,该变量可以被模块内的所有函数访问,不能被模块外其他函数访问,它是一个本地的全局变量,如果一个函数被声明为静态的,那么该函数与普通函数作用域不同,其作用域仅在本文件中,它只可被这一模块内的其他函数调用,不能被模块外的其他函数调用,也就是说这个函数被限制在声明他的模块的本地范围内使用。
3.内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。
发表于 2015-06-12 15:56:19 回复(0)
在函数体内,static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时维持上次的值
在模块内的static全局变量可以被模块内所有函数所访问,不能被模块外函数访问
在模块内的static函数只可以被模块内其他函数调用,这个函数的作用范围被限制在声明他的模块之中
在类中的static成员变量为整个类所拥有,所有类对象只有一份拷贝
在类中的static成员函数为整个类所拥有,这个函数不接收this指针,只能访问static成员变量
发表于 2015-05-30 09:05:53 回复(0)
• 扩展生存周期(如局部static变量)?
• 限制作用域:用于全局变量,与普通全局变量不同的是。它表明该变量的作用域仅限于当前cpp文 件。因此当其他cpp文件中同样出现同名的static变量时,他们是不同的独立的变量?
• 修饰C++中静态成员函数和静态成员变量
发表于 2015-05-05 14:23:30 回复(0)