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成员方法不能同时被声明为虚函数。

发布了59 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/sinat_41852207/article/details/104716058