主页 > 软件开发  > 

C++——static关键字

C++——static关键字
1、static修饰局部变量---->静态局部变量

特点:

(1)第一次调用时创建,然后第一次调用结束时没有被回收,以后每次调用,都延用上一次调用结束时的值,直到程序结束时,才被回收

(2)由这个类创建的所有对象共享同一个静态局部变量

#include <iostream> using namespace std; class Test{ private: int num; public: Test(int num) :num(num){} void add(){ static int number=90; //静态局部变量 number++; cout<<"number="<<number<<endl; } }; int main(){ Test t(0); t.add(); //91 t.add(); //92 t.add(); //93 //由这个类创建的所有对象共享同一个静态局部变量 Test t2(7); t2.add(); //94 return 0; } 2、static修饰成员变量---->静态成员变量

特点:

(1)必须类内声明,类外初始化

(2)所有对象共享,生命周期是程序运行时创建,程序结束时销毁

(3)公共权限下,除了可以使用对象访问静态成员变量,也可以使用类名::静态成员变量名进行访问,推荐使用类名访问

#include <iostream> using namespace std; class Test{ private: int num; //普通成员变量 public: //类内声明 static int num2; //静态成员变量 public: Test(int num) :num(num){} }; //类外初始化 int Test::num2=90; int main(){ //静态成员变量的访问 //两种方式:通过对象、通过类名(推荐使用) Test t3(9); cout<<t3.num2<<endl; //对象访问 cout<<Test::num2<<endl; //类名访问 return 0; } 3、static修饰成员函数---->静态成员函数(方法)

特点:

(1)即可以通过类名调用,也可以通过对象调用

(2)静态成员函数只可以访问静态成员变量,因为其内部没有this指针,所以不可以访问非静态成员变量

(3)静态成员函数声明和定义分离时,static需添加在声明处(类内)

#include <iostream> using namespace std; class Test{ private: int num; //普通成员变量 public: static int num2; //静态成员变量 public: Test(int num) :num(num){} //静态成员函数 static void fn1(){ cout<<"静态成员函数"<<endl; //cout<<this<<endl; //报错,静态成员函数没有this指针,所以不可以访问非静态成员变量 cout<<num2<<endl; //只可以访问静态成员变量 } //类内声明 static void fn2(); }; //类外定义 void Test::fn2(){ cout<<"静态成员函数"<<endl; } int main(){ Test t2(7); //静态成员函数的调用:通过对象、通过类名(推荐使用) Test::fn1(); //类名调用 t2.fn1(); //对象调用 return 0; }
标签:

C++——static关键字由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C++——static关键字