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

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

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

#include   
class M  
{  
public:  
M(int a) { A=a; B+=a;}  
static void f1(M m);  
private:  
int A;  
static int B;  
};  
 
void M::f1(M m)  
{  
cout<<"A="<< 
cout<<"B="<< 
}  
 
int M::B=0;  
void main()  
{  
M P(5),Q(10);  
M::f1(P); file://调用时不用对象名  
M::f1(Q);  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

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

<类名>::<静态成员函数>(<参数表>); 
  • 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++

2010-01-27 17:16:52

C++构造函数

2023-10-07 15:53:05

C/C++静态变量内存

2024-02-22 18:07:17

C++静态成员代码

2010-01-18 17:57:02

静态数据

2009-08-13 18:02:11

C#静态构造函数

2010-02-04 10:02:08

C++静态数据成员

2010-01-19 18:35:12

静态成员

2025-01-26 16:01:13

C++静态成员函数

2010-01-22 11:13:16

C++静态

2023-03-21 15:21:52

开发程序设计static

2010-01-27 16:10:32

C++静态构造函数

2010-01-20 17:58:54

C++静态成员
点赞
收藏

51CTO技术栈公众号