浅析C++静态成员函数操作

开发 后端
C++静态成员函数和静态数据成员,对静态成员的引用不需要用对象名,一个函数可以调用其他函数。在设计良好的程序中,每个函数都有特定的目的。

成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员,如果C++静态成员函数中要引用非静态成员时,可通过对象来引用。下面通过例子来说明这一点。

  1. #include   
  2. class M  
  3. {  
  4. public:  
  5. M(int a) { A=a; B+=a;}  
  6. static void f1(M m);  
  7. private:  
  8. int A;  
  9. static int B;  
  10. };  
  11.  
  12. void M::f1(M m)  
  13. {  
  14. cout<<"A="<< 
  15. cout<<"B="<< 
  16. }  
  17.  
  18. int M::B=0;  
  19. void main()  
  20. {  
  21. M P(5),Q(10);  
  22. M::f1(P); file://调用时不用对象名  
  23. M::f1(Q);  

读者可以自行分析其结果。从中可看出,调用静态成员函数使用如下格式:

  1. <类名>::<静态成员函数>(<参数表>); 

一个类的静态成员函数不能像非静态成员函数那样“默认调用”它的非静态成员函数(因为静态成员函数没有隐含的this参数)。在一个类的静态成员函数中,只要通过某种方式得到了一个指向本类型的对象的指针。

并且有合适的access   level,   就可以对此对象调用其非C++静态成员函数
1.用来保存对象的个数。  #t#
2.作为一个标记,标记一些动作是否发生,比如:文件的打开状态,打印机的使用状态,等等。  
3.存储链表的***个或者***一个成员的内存地址。  

静态成员函数的作用基本上相当于一个带有命名空间的全局函数
1、你不需要生成一个对象的实例就可以直接使用该函数。如,Cxxx::MyStaticFunc();
2、窗口回调函数需使用静态成员函数或全局函数
3、线程调用需使用C++静态成员函数或全局函数

使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

责任编辑:chenqingxiang 来源: NET130
相关推荐

2010-02-04 10:08:00

C++静态成员函数

2010-01-21 14:19:44

C++静态成员

2010-01-28 16:42:29

C++静态成员

2010-01-18 18:04:28

静态成员

2009-07-31 15:44:02

C#静态构造函数

2011-05-24 16:58:52

CC++

2009-11-17 09:07:55

静态构造函数

2011-06-11 21:36:44

C#C++

2023-10-07 15:53:05

C/C++静态变量内存

2024-02-22 18:07:17

C++静态成员代码

2010-01-18 17:57:02

静态数据

2010-01-27 17:16:52

C++构造函数

2009-08-13 18:02:11

C#静态构造函数

2010-02-04 10:02:08

C++静态数据成员

2010-01-19 18:35:12

静态成员

2023-03-21 15:21:52

开发程序设计static

2010-01-20 17:58:54

C++静态成员

2010-01-22 11:13:16

C++静态

2010-01-27 16:10:32

C++静态构造函数

2010-02-03 14:36:47

C++仿函数
点赞
收藏

51CTO技术栈公众号