说说 static关键字的作用
1、定义全局静态变量和局部静态变量
(在变量前加static关键字。初始化的静态变量会在数据段分配内存,未初始化的静态变量会在BSS段分配内存。直到程序结束)
2、定义静态函数
(在函数返回类型加上static关键字,函数就被定义为静态函数,只能在本源文件中使用)
3、在变量前加上static,变量被定义为静态变量。
4、static也可以用来定义类中的静态成语变量:使用静态数据成员,它既可以被当成全局变量那样去存储,但又被隐藏在类的内部。类中的static静态数据成员拥有一块单独的存储区,而不管创建了多少个该类的对象。所有这些对象的静态数据成员都共享这一块静态存储空间。
1 | class student{ |
当调用一个对象的非静态成员函数时,系统会把该对象的起始地址赋给成员函数的this指针。而静态成员函数不属于任何一个对象,因此C++规定静态成员函数没有this指针(划重点,面试题常考)。既然它没有指向某一对象,也就无法对一个对象中的非静态成员进行访问。