c++中的static关键字

1. static全局变量与全局变量有什么区别?

全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。两者在存储方式上并无差异。

两者的区别是非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量再各个源文件中都是有效的。而静态全局变量只在当前源文件中有效,在同一源程序的其他源文件不能使用它。这也是static关键字最重要的特性-----隐藏。

2.static局部变量和普通局部变量有什么区别?

把局部变量改为静态变量后改变了它的存储方式即改变了它的生存期,局部变量的分配是在栈上,而静态局部变量的分配则是在静态存储区。


3.static函数与普通函数有什么区别?

static函数与普通函数作用域不同,仅在本文件中。只在当前源文件中使用的函数应说明为内部函数static修饰的函数,内部函数应该在当前源文件中说明和定义。static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

 

 

class中的static数据成员/成员函数表示属于一个类而不是属于此类的任何特定对象的变量和函数。static既不是限定作用域的,也不是拓展生存期的作用,而是指示变量/函数在此类中的唯一性。

static成员函数:

对静态成员的引用不需要用对象名。

静态成员函数仅能访问静态的数据成员,不能访问非静态的数据成员,这是由于静态的成员函数没有this指针。

 

 

 

 

你可能感兴趣的:(c++)