static成员函数和static成员

Posted guhowo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static成员函数和static成员相关的知识,希望对你有一定的参考价值。

C++的静态成员是和类关联的,它属于某个类,但是不属于某个特定的对象。静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。

但是可以通过对象调用静态成员函数,虽然我们一般不会这么做:

 1 class Point  
 2 {  
 3 public:   
 4     void init()  
 5     {    
 6     }  
 7     static void output()  
 8     {  
 9     }  
10 };  
11 
12 void main()  
13 {  
14     Point pt;  
15     pt.init();   //OK
16     pt.output();  //OK
17 } 

在类外实现时不加static关键字,只有在类内声明时才加static

我们一般会用类名直接调用静态成员函数:

1 Point::output();    //OK 这是更常见的调用方式

 

静态成员函数中不能调用非静态成员。因为静态成员函数的作用就是为了处理静态成员。而静态成员和静态成员函数是没有this指针的,但是非静态成员是有this指针的,所以static member function不能调用非静态成员。

为什么静态成员和静态成员函数没有this指针?

this指针的值是当前被调用的成员函数所在的对象的起始地址,而静态成员只属于类,不属于对象,也就没有this指针了。

 

以上是关于static成员函数和static成员的主要内容,如果未能解决你的问题,请参考以下文章

static成员函数不能调用non-static成员函数

static成员函数和static成员

static 成员函数

java中的静态static关键字

34)static 静态成员和静态成员函数

static小结