c++关键字static的作用

一。面向过程设计时的static

(1)静态变量

        静态变量只初始化一次,未初始化的静态变量会默认初始化为0。

静态全局变量:

        静态全局变量只在本文件可见,外部文件无法访问

静态局部变量:

       而静态局部变量只在定义的作用域内可见,但他们的生存周期都是整个程序运行时期。

 

(2)静态函数

             静态函数主要是起到函数的隐藏作用,static修饰的函数只允许在当前文件中使用,在其他文件中无法找到该函数的地址,include也没用

 

二。面向对象设计时的static

可以用类名:: 直接调用公有静态数据成员和静态成员函数

(1)静态数据成员

         不管这个类有多少实例,这个静态数据成员只有这一个。

         static修饰的数据成员不在栈上分配内存而在.data段分配内存,

        static修饰的数据成员不能通过调用构造函数来进行初始化,因此static修饰的数据成员必须在类外进行定义,定义的时候可以不初始化。在cpp中定义,在头文件中声明。如果在头文件中定义,当多个文件include这个头文件时候,会重复定义。

(2)静态成员函数

           好处就是不需要对象来调用这个函数,直接用类名就行了

          静态成员函数可以在类内或类外定义,但必须在类内声明;

         static成员函数没有this指针,所以不能直接引用非static数据成员或调用类的非static成员函数,只能调用类的static成员数据和static成员函数;

         static成员不是任何对象的组成,不依赖对象的调用所以static成员方法不能被声明为const,因为const只限定该类的对象;

          static成员方法不能同时被声明为虚函数。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章