0%
//post-footer

(1.1.8)static

说说 static关键字的作用

1、定义全局静态变量和局部静态变量
(在变量前加static关键字。初始化的静态变量会在数据段分配内存,未初始化的静态变量会在BSS段分配内存。直到程序结束)
2、定义静态函数
(在函数返回类型加上static关键字,函数就被定义为静态函数,只能在本源文件中使用)
3、在变量前加上static,变量被定义为静态变量。
4、static也可以用来定义类中的静态成语变量:使用静态数据成员,它既可以被当成全局变量那样去存储,但又被隐藏在类的内部。类中的static静态数据成员拥有一块单独的存储区,而不管创建了多少个该类的对象。所有这些对象的静态数据成员都共享这一块静态存储空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class student{
private:
static int count; //静态成员变量,必须由静态成员函数return出来
public:
student(){
count++;
}
static int getCount(){ //静态成员函数
return count;
}
};
int student::count =0;
int main()
{
student s1,s2,s3;
cout << student::getCount() << endl;
return 0;
}

当调用一个对象的非静态成员函数时,系统会把该对象的起始地址赋给成员函数的this指针。而静态成员函数不属于任何一个对象,因此C++规定静态成员函数没有this指针(划重点,面试题常考)。既然它没有指向某一对象,也就无法对一个对象中的非静态成员进行访问。


总结:从变量和函数的角度来看static会产生静态变量和静态函数,从class上来看,static会产生静态成员变量和静态成员函数。

-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道