技术开发 频道

静态成员的作用以及用法的总结

  【IT168 技术】类的静态成员分为静态数据成员和静态函数成员。先来看看类的静态数据成员:

  一、类的静态数据成员有什么用?

  类实现了数据和数据的操作封装在一起,每个类的对象都会分配好内存来保存自己的数据成员,但是往往某个类的众多对象需要一些数据共享,比如定义了Person类,实例化了person1,person2,person3,但是我现在想知道我到底实例化了多少个person对象,怎么办?一个想法是定义一个count数据,这个数据为这些person对象共享,每个person都可以访问该count数据成员,这就是类的静态数据成员的作用:静态成员是解决同一个类的不同对象之间数据和函数共享的问题。

  二、怎么定义一个静态数据成员

  用关键字 static 来定义,比如 static int count 。

  三、实例

  看如下代码:

<span style="font-size: 14px;">class Point
{
public:
    Point(
int m=0, int n=0 )
    {
        
this->x = m ;
        
this->y = n  ;
        
this->count ++ ;
    }
    
~Point() { this->count -- ; }
    
int getX() { return this->x ;}
    
int getY() { return this->y ;}
    
void ShowCount() { cout << "The numbers of count are :" << this->count << endl;}
private:
    
int x ;
    
int y ;
    
static int count ;    
}
<br>int Point::count = 0 ;
</span>

  count 就被定义为 静态成员变量,那么 count 就可以为所有的Point 对象所共享,通过对象名.ShowCount 来访问 count:

Point A(4,5) ;
A.ShowCount() ;  
//  1
Point B(A) ;
B.ShowCount()  
// 2

  count 为 静态成员,每个对象的创建和销毁都会影响到count 。

  四、静态数据成员需要注意的地方

  1. 静态数据成员不属于任何一个对象,它只属于类。

  2. 静态数据成员的初始化要在实例化对象之前,否则你要是用 类名::静态数据成员 来访问 (这个可以在没有实例化对象)输出错误结果。

  3. 一般静态成员不能在内联函数中访问。

1
相关文章